簡體   English   中英

C ++斐波那契序列

[英]C++ Fibonacci sequence

我要制作的程序應該計算並顯示斐波那契數列的每個條目,直到第40個。

我相信完成這項工作將近。 問題是:在數字1和2之后,該序列似乎只是在重設自身,並將序列中的每個后續數字1留在后面。

這是代碼:

#include <iostream>
using namespace std;

int main()
{
    int a = 0;
    int b = 1;
    for (int i = 0; i < 40; ++i)
    {
        if (i==1)
        {
            cout << i << " " << b << endl;
        }
        else if (i==2)
        {
            cout << i << " " << b*2 << endl;
        }
        else
        {
            int c = a + b;
            a = b;
            b = c;
            cout << i << " " << c << endl;
        }
    }
    return 0;
}

我無法對序列中的前兩個數字進行預編程,因為無法使它們正常工作,但是這樣做之后,似乎就剩下了程序的其余部分。

代碼的輸出是這樣的:

0 1
1 1
2 2
3 2
4 3
5 5
6 8
7 13
8 21
9 34
10 55
11 89
12 144
13 233
14 377
15 610
16 987
17 1597
18 2584
19 4181
20 6765
21 10946
22 17711
23 28657
24 46368
25 75025
26 121393
27 196418
28 317811
29 514229
30 832040
31 1346269
32 2178309
33 3524578
34 5702887
35 9227465
36 14930352
37 24157817
38 39088169
39 63245986

似乎在創建該帖子后立即解決了此問題。

我決定嘗試將序列(0)中的第一個條目預編程為一個,然后完全刪除序列中的其他預編程部分。 這解決了整個問題。

這是工作代碼:

#include <iostream>
using namespace std;

int main()
{
    int a = 0;
    int b = 1;

    for (int i = 0; i < 40; ++i)
    {
        if (i == 0)
        {
            cout << i << " " << b << endl;
        }
        else
        {
            int c = a + b;
            a = b;
            b = c;
            cout << i << " " << c << endl;
        }
    }
    return 0;
}

您忘記為第二種情況設置a

因此,當b = 2c使用的先前值a0
因此, c = a+b = 0 + 2 = 2

在第二種情況下,將a = 1設置a = 1

else if (i==2)
{
    a = 1 // This
    cout << i << " " << b*2 << endl;
}

我對序列中的前兩個數字進行了預編程 ..如果您希望按照這種方式進行操作,則以下可能是另一種方法。

#include <iostream>
using namespace std;

int main()
{
    int a = 0;
    int b = 1;

    cout << 0 << " " << a << endl;//simply display the preprogrammed numbers
    cout << 1 << " " << b << endl;

    for (int i = 2; i < 40; ++i)//apply the formula for remaining elements
    {
        int c = a + b;
        a = b;
        b = c;
        cout << i << " " << c << endl;
    }
    return 0;
}

嘗試在程序中進行以下更改。

#include <iostream>
using namespace std;

int main() {
    int a = 0;
    int b = 1;
    for (int i = 0; i < 40; ++i)
    {
        if (i==0)
        {
            cout << i << " " << a << endl;
        }
        else if (i==1)
        {
            cout << i << " " << b << endl;
        }
        else
        {
            int c = a + b;
            a = b;
            b = c;
            cout << i << " " << c << endl;
        }
    }
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM