codeup23145 斐波那契数列
时空限制 1000ms/128MB
题目描述
斐波那契数列: 0, 1, 1, 2, 3, 5, 8,13,21,34,55,… ,从第三项起,每一项都是紧挨着的前两项的各。用递归程序求斐波那契数列的任意一项。
输入
一个整数:所求的基数n (1<=n<=35)
输出
一个整数:第n项数据的值。
样例输入
10
样例输出
34
代码
#include<iostream>
using namespace std;
long long a[100];
long long f(int n){
if (a[n]) return a[n];
else if (n==1) return a[n]=0LL;
else if (n==2) return a[n]=1LL;
else {
if (!a[n-2]) a[n-2]=f(n-2);
if (!a[n-1]) a[n-1]=f(n-1);
return a[n]=a[n-2]+a[n-1];
}
}
int main(){
int n;
while (cin>>n)
cout<<f(n)<<endl;
return 0;
}