标题:关于fibonacci数列的一道题
取消只看楼主
kakawei
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-29
 问题点数:0 回复次数:4 
关于fibonacci数列的一道题
各位帮忙看一下,下面这个程序有逻辑错误吗?
f(n)是fibonacci数列,当输入一个数x,且f(n)〈x〈f(n+1)时,输出n
否则输出-1。
但是当我输入3,5,7。。。这些属于该数列的数时,本应该输出-1,但是结果并不是
#include<iostream>
#include<cmath>
using namespace std;
double fib(unsigned long);
int main()
{
for(int i=1;;i++)
{
unsigned long num;
cin>>num;
if(num>=1&&num<=pow(2.,31))
{
for(unsigned long j=0;;j++)
{
if(fib(j+1)<=num)
continue;
else if(fib(j+1)>num&&fib(j)<num)
{cout<<j<<endl;break;}
else if(fib(j)>=num)
{cout<<-1<<endl;break;}
}
}
}
system("pause");
}
double fib(unsigned long number)
{
return (pow((1+sqrt(5.))/2.,static_cast<double>(number+1))-pow((1-sqrt(5.))/2.,static_cast<double>(number+1)))/sqrt(5.);
}

搜索更多相关主题的帖子: fibonacci 
2007-11-11 17:37
kakawei
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-29
得分:0 
递归我会啊,但我想用迭代,帮忙再看看吧

乱舞风云
2007-11-12 15:59
kakawei
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-29
得分:0 
看不明白能不能说详细一点,我想要迭代,而且通项我已经写出来了,就是程序有点问题。

乱舞风云
2007-11-12 23:31
kakawei
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-29
得分:0 
6楼的强人:
while(num>t)
{
t=a;
a=b
b=t+b;
n++;
}
t,a,b,n都代表什么啊?说清楚点啊!

乱舞风云
2007-11-14 10:30
kakawei
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-29
得分:0 
如果输入一个num=f(n)的,你的迭代得出的n就不满足f(n)〈x〈f(n+1),
而且b放在这里有什么用啊?

乱舞风云
2007-11-14 21:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-185280-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.215231 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved