C 有人能解释一下这个代码中的for循环是如何工作的吗?

C 有人能解释一下这个代码中的for循环是如何工作的吗?,c,loops,C,Loops,这段代码应该显示用户选择多少项的斐波那契序列。代码按预期工作,我只想有人解释一下这个代码块的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 y

这段代码应该显示用户选择多少项的斐波那契序列。代码按预期工作,我只想有人解释一下这个代码块的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,);

    }
}
#包括
#包括
真空总管(真空)
{
int i,fibTerm,oneBack=0,twoBack=1,fibNum;
双倍比率;
printf(“您希望计算多少斐波那契项?\n”);
scanf(“%d”、&fiberm);

对于(i=1;i而言,斐波那契序列是一系列数字:
[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项是
fiberm
th时停止计算

您的代码有一个无关的格式说明符和逗号,因此它不应该编译。
printf(“f(%d)=%d。比率为%lf\n”,i,fibNum,);
你可能是说:

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

它沿着序列“走”上去,fibNum是F(n),oneBack是F(n-1),twoBack是F(n-2)。在每个数字之后,oneBack变为twoBack,然后fibNum变为oneBack,并计算一个新的fibNum。查看这一点的最简单方法是将所有变量名称绘制在顶部。接下来,执行程序的每个步骤,并在已更改变量的列下写入任何更改的值。然后,您将看到更改后的结果Scott在前面的评论中描述了。你不明白其中的哪一部分?它只是赋值和添加变量,一点也不复杂。如果你知道什么是斐波那契数,应该清楚它是如何工作的。Barmar我不明白这就是我问这个问题的原因。谢谢你的回答,是的,这是因为我在转移到这里之前删除了原始代码中的一些变量,以减少混乱。但我想我忘记了完全修复它。