c ++中的斐波那契序列(不工作)

时间:2016-03-03 15:18:46

标签: c++ loops math

这是我编写的用于显示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;
}

1 个答案:

答案 0 :(得分:1)

在Fibonacci序列中,

S(N+2) = S(N) + S(N+1)

在计算循环中的数字时,您需要不断更新S(N)S(N+1)。您有其他令您困惑的变量。核心逻辑很简单。

next = prev1 + prev2
prev1 = prev2;
prev2 = next;

只要您正确初始化prev1prev2,这就是您所需要的:

这是一个应该有效的简化版本。

int prev1 = 0;
int prev2 = 1;
int end = 10;

 for ( int i = 0; i <= end; ++i)
 {
    int next = prev1 + prev2;
    prev1 = prev2;
    prev2 = next;
 }