C

[C] 재귀함수를 이용한 피보나치 수열 출력

아몬드맛빼빼로 2024. 4. 18. 11:39
반응형

재귀함수를 이용해 피보나치 수열을 출력하는 예제

예시들


#include "stdio.h"

int fibo(int N) {
    if (N > 1)
        return fibo(N - 1) + fibo(N - 2);
    else if (N == 0)
        return 0;
    else if (N == 1)
        return 1;
}

int main(void) {
    int n, result;
    scanf("%d", &n);
    result = fibo(n);
    printf("%d", result);
}
#include "stdio.h"

int fibo(int n) {
	if(n <= 1)
    	return n;
    return fibo(n - 1) + fibo(n - 2);
}
int main(void) {
	int num;
    scanf("%d", &num);
    printf("%d", fibo(num));
    return 0;
  }

코드해석


위 코드블록의 기본적인 구조는 변수 'n'이 1이나 0이 될때까지 함수(인수-1)+함수(인수-2)의 구조로 자기 자신을 호출하는 것이다

출처:https://zzang9ha.tistory.com/188,프로그래머스 Tistrory

매개변수로 5가 입력된다면 fibo(5-1)+fibo(5-2)이기 때문에 4와 3이 다시 한번 fibo함수로 내려가고

if문에 의해 n이 1 이하가 된것을 검사하면 return 1이나 return 0를 하여 다시 위로 돌아온다.

최종적으론 피보나치 수열에서 5번째에 해당하는 값인  '5'가 출력된다.