【题目链接】
ybt 1201:菲波那契数列
OpenJudge NOI 2.2 1755:菲波那契数列
【题目考点】
1. 递推/递归
【解题思路】
【君义精讲】多种方法求斐波那契数列
由于该题出现在递归章节,本题只给出递归解法
【题解代码】
解法1:一般递归
#include <bits/stdc++.h>
using namespace std;
int fib(int i)
{
if(i <= 2)
return 1;
else
return fib(i-1) + fib(i-2);
}
int main()
{
int n, a;
cin >> n;
while(n--)
{
cin >> a;
cout << fib(a) << endl;
}
return 0;
}
解法2:记忆化递归
#include <bits/stdc++.h>
using namespace std;
int f[25];//f[i]:斐波那契数列第i项
int fib(int i)
{
if(f[i] > 0)
return f[i];
if(i <= 2)
return 1;
else
return f[i] = fib(i-1) + fib(i-2);
}
int main()
{
int n, a;
cin >> n;
while(n--)
{
cin >> a;
cout << fib(a) << endl;
}
return 0;
}