Fibonacci数求解
//已知 f(n) = f(n-1) + f(n-2) ,f(0) = 0 ,f(1) = 1。 求 f(n)
#include<stdio.h>
long fb_iter(int n);
long fb_array[100]={0};
int main()
{
printf("start caculate Fibonacci\n");
printf("Fibonacci is %d\n",fb_iter(10));
}
/*递归方式*/
/*
long fb_iter(int n)
{
if (0==n) return 0;
if (1==n) return 1;
return (fb_iter(n-1)+fb_iter(n-2));
}
*/
//典型的用空间换取时间
/*
long fb_iter(int n)
{
int i=0;
fb_array[0]=0;
fb_array[1]=1;
for(i=2;i<=n;i++)
fb_array[i]=fb_array[i-1]+fb_array[i-2];
return fb_array[n];
}*/
//最优方案,时间和空间都得到了节省
long fb_iter(int n)
{
int i=0;
long add1=1;
long add0=0;
long sum=0;
for(i=2;i<n;i++)
{
sum=add1+add0;
add0=add1;
add1=sum;
printf("sum %d\n",sum);
}
return (add1+add0);
}
浙公网安备 33010602011771号