簡體   English   中英

有人可以確切解釋此代碼中的for循環如何工作嗎?

[英]Can someone explain exactly how the for loop in this code works?

該代碼應該顯示用戶選擇的術語數的斐波那契數列。 該代碼按預期工作, 我只希望有人解釋此代碼塊的for循環實際上是如何工作的。

#include <stdio.h>
#include <stdlib.h>


void main(void)
{
    int i, fibTerm, oneBack = 0, twoBack = 1, fibNum;
    double ratio;

    printf("How many fibonacci terms would you like to calculate?\n");
    scanf("%d", &fibTerm);

    for (i = 1; i <= fibTerm; i++)
    {   
        fibNum = oneBack + twoBack;
        twoBack = oneBack;
        oneBack = fibNum;
        printf("f(%d) = %d. The ratio is %lf\n", i, fibNum,);

    }
}

斐波那契數列是一系列數字: [0, 1, ... ] ,其中下一個數字是通過將前面的兩個數字相加而得出的。

0+1=1
1+1=2
2+1=3
3+2=5
5+3=8
...

變量初始化為: oneBack = 0twoBack = 1 因此,每次循環:

fibNum = oneBack + twoBack; // = 0+1=1
twoBack = oneBack;          // = 0
oneBack = fibNum;           // = 1

fibNum = oneBack + twoBack; // = 1+0=1
twoBack = oneBack;          // = 1
oneBack = fibNum;           // = 1

fibNum = oneBack + twoBack; // = 1+1=2
twoBack = oneBack;          // = 1
oneBack = fibNum;           // = 2

fibNum = oneBack + twoBack; // = 2+1=3
twoBack = oneBack;          // = 2
oneBack = fibNum;           // = 3

fibNum = oneBack + twoBack; // = 3+2=5
twoBack = oneBack;          // = 3
oneBack = fibNum;           // = 5

fibNum = oneBack + twoBack; // = 5+3=8
twoBack = oneBack;          // = 5
oneBack = fibNum;           // = 8

fibNum = oneBack + twoBack; // = 8+5=13
twoBack = oneBack;          // = 5
oneBack = fibNum;           // = 13

...

i是循環計數器,當計算的第i個項是fibTerm th時停止計算。

您的代碼具有多余的格式說明符和逗號,因此不應編譯。 printf("f(%d) = %d. The ratio is %lf\\n", i, fibNum,); 您可能的意思是:

ratio = oneBack / fibNum;
printf("f(%d) = %d. The ratio is %lf\n", i, fibNum, ratio);

暫無
暫無

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

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