关于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.);
}