求Fibonacci数列前40个数,要怎么编呀,谢谢大家的帮忙
求Fibonacci数列前40个数,这个数的特点:第1,2两数为1,从第3个数开始,该数是其前面两个数之和。即:1,1,2,3,5,8,13,21,34,55,89,144,233……这个要怎么编呀,谢谢大家的帮忙
----------------解决方案--------------------------------------------------------
FIBONACCI的定义嘛,用函数递归讪
----------------解决方案--------------------------------------------------------
#include<stdio.h> int Fibonacci(int a) { if(a>2)return Fibonacci(a-1)+Fibonacci(a-2); else return 1; }
void main() { int a; long int sum=0; scanf("%i",&a); for(int c=1;c<=a;c++) { sum+=Fibonacci(c); printf("%i %li \n",c,sum); } } 好像效率不高,
----------------解决方案--------------------------------------------------------
long int Fibonacci(int a)
{long int a1=1,a2=1,a3;
if(a<3)return 1;
else
{
for(int b=1;b<=(a-2);b++)
{
a3=a1+a2;
a1=a2;
a2=a3;
}
return a3;
}
}
这个效率要高点了~~
[此贴子已经被作者于2005-7-8 10:16:22编辑过]
----------------解决方案--------------------------------------------------------
谭浩强老师的书上是这么写的:
main()
{
long int f1, f2 ;
int i;
f1=1;f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld%12ld",f1,f2);
if(i%2==0)printf("\n");
f1=f1+f2;
f2=f2+f1;
}
}
[此贴子已经被作者于2005-7-25 10:24:11编辑过]
----------------解决方案--------------------------------------------------------