Fibonacci相关题目
来源:互联网 发布:劳伦斯大学 知乎 编辑:程序博客网 时间:2024/05/18 00:27
请分别设计一个递归和非递归算法来计算F(n)
F列可递归定义为:
n为大于等于0的整数
F(n)=n 当n=0,1,2
F(n)=F(n-1) - F(n-3) 当n>=3
F列可递归定义为:
n为大于等于0的整数
F(n)=n 当n=0,1,2
F(n)=F(n-1) - F(n-3) 当n>=3
const int Max=1000000;
bool got[Max];
int gotVal[Max];
int Cal(int n){
if(got[n]) return gotVal[n];
got[n]=1;
return Cal(n-1)-Cal(n-3);
}
int main(){
int n;
got[0]=got[1]=got[2]=1;
gotVal[0]=0,gotVal[1]=1,gotVal[2]=2;
while(cin>>n, n>=0 && n<Max){
cout<<Cal(n)<<endl;
}
return 0;
}
bool got[Max];
int gotVal[Max];
int Cal(int n){
if(got[n]) return gotVal[n];
got[n]=1;
return Cal(n-1)-Cal(n-3);
}
int main(){
int n;
got[0]=got[1]=got[2]=1;
gotVal[0]=0,gotVal[1]=1,gotVal[2]=2;
while(cin>>n, n>=0 && n<Max){
cout<<Cal(n)<<endl;
}
return 0;
}
//non-recursive
const int Max=1000000;
int max;
int F[Max];
int main(){
int n;
F[0]=0,F[1]=1,F[2]=2;
while(cin>>n, n>=0 && n<Max){
if(n<=max){
cout<<F[n]<<endl;
continue;
}
for(int i=max+1;i<=n;i++) F[i]=F[i-1]-F[i-3];
max=n;
cout<<F[n]<<endl;
}
return 0;
}
const int Max=1000000;
int max;
int F[Max];
int main(){
int n;
F[0]=0,F[1]=1,F[2]=2;
while(cin>>n, n>=0 && n<Max){
if(n<=max){
cout<<F[n]<<endl;
continue;
}
for(int i=max+1;i<=n;i++) F[i]=F[i-1]-F[i-3];
max=n;
cout<<F[n]<<endl;
}
return 0;
}
- Fibonacci相关题目
- (java题目第2讲)Fibonacci相关题目
- Fibonacci 题目汇总
- 题目1092:Fibonacci
- [微软]题目3 : Fibonacci
- 题目13 Fibonacci数
- 题目1092:Fibonacci
- 题目13-Fibonacci数
- 【题目31】Fibonacci数列问题
- NYOJ 题目13 Fibonacci数
- nyoj题目13:Fibonacci数
- 南阳题目13-Fibonacci数
- Fibonacci数列的相关问题
- Fibonacci数列及相关问题
- 九度OJ 题目1092:Fibonacci
- 矩阵经典题目六:poj 3070 Fibonacci
- HDOJ 题目1568 Fibonacci(数学,公式)
- 题目1092 Fibonacci 九度Online Judge
- Business Scenario
- CHtmlEditView中获取Focus的方法
- 77种互联网盈利创新模式
- 得到ResultSet记录数的方法
- 郁闷的button Tooltip
- Fibonacci相关题目
- Autoruns v9.02
- Oracle动态游标入门一
- 人总要经历一些事
- 12 Jan 2008 --> ALV
- 离婚后,只爱小男人(转贴)
- 在ASP.NET中把图片保存到SQL SERVER数据库(vb.net)
- 12 Jan 2008 --> ALV
- 12 Jan 2008 --> ALV