재귀함수란 자기 자신 함수을 호출하도록 만들어진 함수를 말합니다.
자기 자신을 호출하기 때문에 코드의 줄 수를 줄일 수 있지만,
함수 호출시 return 해야 하는 주소를 stack 에 저장하기 때문에
너무 많은 호출은 stack overflow 라는 치명적인 문제를 발생할 수 도 있습니다.
★ 소스코드는 아래와 같습니다.
#include <stdio.h>
float recursive( int n ) {
if( n == 1 )
return 1;
else
return recursive( n - 1 ) + ( (float)1 / n );
}
int main() {
int n;
printf("정수 n 을 입력하세요 : ");
scanf("%d", &n);
printf("정수 n = %d 에 대한 수식의 결과값은 %f 입니다.\n", n, recursive( n ) );
return 0;
}
★ 소스 설명
위의 코드를 보시면 우선 재귀함수 recursive( int n ) 를 작성합니다. ( 분홍색 )
작성 방법은 종료 조건을 먼저 생각합니다.
위의 경우는 n == 1 인 경우에 return 1 을 해서 종료합니다.
그렇지 않은 경우는 자기 자신의 recursive( int n ) 을 호출하는데,
recursive( n - 1 ) + ( (float)1 / n ) 와 같이 호출합니다.
즉 수식을 계산하기 위함이죠.
이로써 재귀 함수를 봤고 main 함수는 그다지
큰 부분이 없습니다.
scanf 로 정수 n 을 입력받는 부분( 보라색 )과
그 결과를 출력하는 부분 ( 파란색 ) 입니다.
★ 출력결과
================================================================================
정수 n 을 입력하세요 : 1
정수 n = 1 에 대한 수식의 결과값은 1.000000 입니다.
정수 n 을 입력하세요 : 100
정수 n = 100 에 대한 수식의 결과값은 5.187378 입니다.
정수 n 을 입력하세요 : 4
정수 n = 4 에 대한 수식의 결과값은 2.083333 입니다.
================================================================================
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
[스크랩] PHP에서 자바스크립트 변수넘기기 2가지방법 정리 (0) | 2009.09.28 |
---|---|
DIV 레이어 속성 (0) | 2009.09.21 |
홈페이지에 팝업창 띄우기 소스 (0) | 2009.07.30 |
[스크랩] #ifndef ~ #endif 와 #pragma once 의 차이점 (0) | 2009.07.17 |
★자바스크립트와 ★PHP를 연동 (0) | 2009.07.15 |