본문 바로가기
C

C언어]재귀 - 피보나치 수열

by stdlib.h 2016. 3. 29.

이 문제는 N을 입력하면 N번째의 피보나치 수열 값을 출력한다.


피보나치 수열은 다음과 같다.


1 1 2 3 5 8 13 21...

이처럼 N이라면, N-1번째의 수와 N-2 번째의 수를 더한 값을 구한다.

이를 코드로 구현하면 다음과 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int print(int b);
 
int main(void)
{
    int a, b=0;
    scanf("%d", &a);
    printf("%d\n", print(a));
}
int print(int b)
{
    if (b == 1 || b == 2)
        return 1;
    else
        return print(b - 1+ print(b - 2);
}
cs


먼저 a를 입력받아 전달하고, 이게 1이나 2라면 1을 반환한다.

아니라면 재귀를 돌려 b-1 과 b-2 를 각각 구한뒤 더한값을 리턴한다.

'C' 카테고리의 다른 글

동적할당  (0) 2016.04.03
포인터  (0) 2016.03.31
C언어] 1부터 N까지의 합  (0) 2016.03.29
C언어] 재귀 - A 부터 B 사이의 홀수 출력.  (0) 2016.03.29
C언어]재귀 - N부터 1까지 출력  (0) 2016.03.29