gwq85387566
版主
  
UID 2605
精华
0
积分 151
帖子 151
阅读权限 100
注册 2006-4-1 来自 岳阳
状态 离线
|
关于程序性能的问题!!
人们熟悉的Fibonacci菲波那契数列:
F(0)=0
F(1)=1
F(n)=F(n-1)+F(n-2) n>1
如果在小于47的字变量下求值,函数可以用单纯的int类型来表示。
用以下几中方法来实现计算
int fibol(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;
return fibol(n-1)+fibol(n-2);
}
int fibo2(int n)
{
int a=0,c;
for(int b=1,c,i=2;i<=n;++i)
c=a+b,a=b,b=c;
return c;
}
int fibo3(int n)
{
vector<int>v(n+1,0);v[1]=1;
for(int i=2;i<=n;++i)
v=v[i-1]+v[i-2];
return v[n];
}
int fibo4(int n)
{
return(pow((1+sqrt(5.0))/2,n)-pow((1-sqrt(5.0))/2,n))/sqrt(5.0);
}
讨论那种方法更好,在那种情况下适合用那种方法!!!??
如果有更好的方法,请列出来并给予原因!!!
|
|