백준 10870
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fibonacci(int n) {
if (n == 0) {
return 0;
}
else if (n == 1) {
return 1;
}
else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", fibonacci(n));
return 0;
}
피보나치 수식인 F(n) = F(n-1)+F(n-2) (n>=2)를 이용해 식을 세웠다. F(0)은 0이고, F(1)은 1이기에 n이 0일땐 0을 리턴하고, n이 1일땐 1을 리턴하며, 그외엔 fibonacci(n-1) + fibonacci(n-2)를 리턴하는 함수를 만들었다.
예를 들어 fibonacci(4)를 호출한다면 fibonacci(3)+fibonacci(2)를 리턴하기 전 fibonacci(3)과 fibonacci(2)를 호출할 것이다. fibonacci(3)을 호출한다면 fibonacci(2)+fibonacci(1)을 리턴하기 전 fibonacci(2)와 fibonacci(1)을 호출할 것이다. fibonacci(2)를 호출한다면 fibonacci(1)+fibonacci(0)을 리턴하기 전 fibonacci(1)과 fibonacci(0)을 호출할 것이다. fibonacci(1)은 1을 , fibonacci(0)은 0을 리턴하기에 fibonacci(2)는 1+0=1을 리턴할 것이다. fibonacci(3)은 1+1=2를 리턴할 것이고, fibonacci(4)는 2+1=3을 리턴할 것이다.
'C' 카테고리의 다른 글
[C]백준 11.브루트포스: 2798 (0) | 2022.01.20 |
---|---|
[C]백준 10.재귀: 2447 (0) | 2022.01.19 |
[C]백준 10.재귀: 10872 (0) | 2022.01.16 |
[C]백준 10.재귀: 11729 (0) | 2022.01.16 |
[C]백준 09.기본수학2: 1002 (0) | 2022.01.15 |