C语言编程:写出斐波那契数列的前40个数

求高手帮帮忙吧~~

#include <stdio.h>

 int main()

{

int f1 = 1;

int f2 = 1;

int f3,i;

printf("%d\t%d\t",f1,f2);

for(i = 1; i <= 38; i++)

{

f3 = f1 + f2;

printf("%d\t",f3);

f1= f2;

f2= f3;

}

printf("\n");

return 0;

}

扩展资料:

在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

递推公式

斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2)

显然这是一个线性递推数列。

平方与前后项

从第二项开始,每个偶数项的平方都比前后两项之积少1,每个奇数项的平方都比前后两项之积多1。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-05-18
一楼的递归太多,栈溢出了。
main()
{
long fib[40] = {1,1};
int i;
for(i=2;i<40;i++)
{
fib[i] = fib[i-1]+fib[i-2];
}
for(i=0;i<40;i++)
{
printf("F%d==%d\n", i, fib[i]);
}
return 0;
}
第40项的范围还在long内,不会溢出。
第40项的值为:102334155本回答被提问者采纳
第2个回答  2006-07-23
#include<stdio.h>

int fun(int n)
{
if(n == 1 || n == 2) return 1;
else return fun(n-1) + fun(n-2);
}

void main()
{
int i;
for(i = 1; i <= 40; i++){
printf("%d\n", fun(i));
}
}

下面的请不要没有依据就乱说,先运行再说!
第3个回答  2006-07-23
呵呵,抱歉,没有留意到其实没有溢出。
第4个回答  2006-07-22
楼上的程序看到我头疼!
相似回答