끄적끄적

반응형

재귀함수란 자기 자신 함수을 호출하도록 만들어진 함수를 말합니다.

자기 자신을 호출하기 때문에 코드의 줄 수를 줄일 수 있지만,

함수 호출시 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 입니다.


반응형
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]