5个回答
展开全部
#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。
推荐于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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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));
}
}
下面的请不要没有依据就乱说,先运行再说!
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));
}
}
下面的请不要没有依据就乱说,先运行再说!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵,抱歉,没有留意到其实没有溢出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的程序看到我头疼!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询