斐波那契数列:c语言

以下给出计算斐波那契数列的两种不同方法:(1)递推计算f0=0,f1=1;fi=f(i-1)+f(i-2),(i>1)(2)公式计算fi=(int)(c^i/sqrt(5... 以下给出计算斐波那契数列的两种不同方法:
(1)递推计算
f0=0,f1=1;
fi=f(i-1)+f(i-2), (i>1)

(2)公式计算
fi=(int)(c^i/sqrt(5)+0.5)

c=(1.0+sqrt(5)/2.0)

试编写程序找出以上两种计算方法求得的fi不相等的i
展开
 我来答
风若远去何人留
推荐于2020-12-12 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450164
专业C/C++软件开发

向TA提问 私信TA
展开全部
你公式计算的公式不对 如果按照这个公式计算,只有0 和1的时候是一样的 剩下的都不一样
程序这样做
#include <stdio.h>
#include <math.h>
int f1(int i)
{
if(i == 0) return 0;
if(i == 1) return 1;
return f1(i - 1) + f1(i - 2);
}

int f2(int i)
{
#if 1
int ret;
double c;

c = (1.0+sqrt(5)/2.0);
ret =(int)(pow(c,i)/sqrt(5)+0.5);
#else
int ret;
double c, c1;

c = (1.0+sqrt(5))/2.0;
c1 = (1.0-sqrt(5))/2.0;
ret =(int)((pow(c,i) - pow(c1, i))/sqrt(5)+0.5);

#endif
return ret;
}

main()
{
int i = 0;
int r1, r2;
while(1)
{
r1 = f1(i);
r2 = f2(i);
if(r1 != r2)
printf("diff at %d, %d %d\n", i, r1, r2);
i ++;
}
}

在f2里面有一个#if 1 这时是用你的公式
改成#if 0后用的是正确的公式
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式