C로 구현한 2747번 피보나치 수 문제 풀이입니다.
https://www.acmicpc.net/problem/2747
#include <stdio.h>
int arr[46] = {0,};
int fibo(int x) {
if(x == 1 || x == 2)
return 1;
if(arr[x] != 0)
return arr[x];
return arr[x] = fibo(x - 1) + fibo(x - 2);
}
int main() {
int n;
scanf("%d", &n);
printf("%d", fibo(n));
}
문제에서 요구하는 바와 같이 특정번째의 피보나치 수를 구한다.
fibo( ) 메소드에서 전달받은 값이 1 혹은 2 라면 1을 리턴한다. 피보나치 수의 첫번째, 두번째 값은 1이기 때문이다.
또한, 전달받은 값이 1 혹은 2가 아니라면 배열 d의 해당 인덱스 값이 0이 아닌지 판별하여 0이 아니라면 그 값을 리턴한다.
위 조건도 만족하지 않는다면 재귀 호출하는 방식으로 x - 1 번째 수와 x - 2 번째 수를 더하여 리턴한다.
'백준(C언어) 풀이 > 수학' 카테고리의 다른 글
백준(C) 11653번 소인수분해 풀이 (0) | 2021.09.20 |
---|---|
백준(C) 4153번 직각삼각형 풀이 (0) | 2021.09.20 |
백준(C) 5543번 상근날드 (0) | 2021.09.17 |
백준(C) 2581번 소수 풀이 (0) | 2021.09.15 |
백준(C) 2475번 검증수 풀이 (0) | 2021.09.08 |