이 문제는 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 |