[英]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 = 0
和twoBack = 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.