💡 다이나믹 프로그래밍/수학
Memory 1112KB Time 0ms Code Length 333B
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
using namespace std;
int n;
long long memo[100] = {0,1};
long long fibo(int n) {
if (n == 0 || n == 1) {
return memo[n];
}
if (memo[n] == 0) {
memo[n] = fibo(n - 1) + fibo(n - 2);
return memo[n];
}
return memo[n];
}
int main()
{
scanf("%d", &n);
long long result = fibo(n);
printf("%lld", result);
}
~이 코드는 피보나치 수열을 재귀적으로 계산하는 함수를 이용하여 사용자로부터 입력받은 숫자에 해당하는 피보나치 수를 출력하는 프로그램이다. n을 입력받고, memo 배열에는 이미 계산된 피보나치 수열의 값을 저장한다. fibo 함수는 n이 0 또는 1일 때는 memo 배열에서 값을 반환하고, 그 외의 경우에는 memo 배열에 값이 없다면 n-1과 n-2의 피보나치 수를 재귀적으로 계산하여 memo 배열에 저장하고 반환한다. main 함수에서는 사용자로부터 n을 입력받고, fibo 함수를 호출하여 결과를 출력한다.