题目描述
斐波那契数列是指这样的数列:第一个数和第二个数都为 1,接下来每个数都等于前面两个数之和。编程输入一个正整数 k,输出斐波那契数列第 k 个数。
输入描述
一行一个正整数 k,3≤k≤46。
输出描述
一行一个正整数,表示斐波那契数列第 k 个数的大小。
输入样例
19
输出样例
4181
//参考答案
#include <iostream>
using namespace std;
long long memo[50]; // 记忆数组,memo的意思是备忘录
long long f(int n) {
if (memo[n]) // 如果结果存在,直接返回
return memo[n];
if (n <= 2) // 否则递归计算memo[n]并返回
memo[n] = 1;
else {
memo[n] = f(n-1)+f(n-2);
}
return memo[n];
}
int main() {
int k;
cin >> k;
cout << f(k) << endl;
return 0;
}