这是我编写的用于显示Fibonacci序列的代码。有人可以告诉我为什么它错了,我怎么能纠正这个? 我觉得我的逻辑是正确的,但执行方式却不是。反正有没有修改同一个程序才能使它工作?
#include<iostream>
using namespace std;
int main()
{
int a = 0, b = 1, prev1, prev2,i = 0;
while (i <= 100)
{
prev1 = b+a;
prev2 = b;
a = prev1 - prev2;
prev1 = prev1 + prev2;
cout << "prev1 = \n"<<prev1<<"\n";
i++;
/*
Logic I Used.
a = 0
prev2= b = 1
prev1= a+b= 1
prev1 + prev2 = (a+b)+(b)= 2
*/
}
return 0;
}
答案 0 :(得分:1)
在Fibonacci序列中,
S(N+2) = S(N) + S(N+1)
在计算循环中的数字时,您需要不断更新S(N)
和S(N+1)
。您有其他令您困惑的变量。核心逻辑很简单。
next = prev1 + prev2
prev1 = prev2;
prev2 = next;
只要您正确初始化prev1
和prev2
,这就是您所需要的:
这是一个应该有效的简化版本。
int prev1 = 0;
int prev2 = 1;
int end = 10;
for ( int i = 0; i <= end; ++i)
{
int next = prev1 + prev2;
prev1 = prev2;
prev2 = next;
}