我在C中练习数组。我发现下面提到的代码。
int main(void)
{
int numbers[10] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int i, j;
**for (j = 0; j < 10; ++j)
for (i = 0; i < j; ++i)
numbers[j] = numbers[j] +numbers[i];**
for (j = 0; j < 10; ++j)
printf("%i ", numbers[j]);
printf("\n");
return 0;
}
我知道这是一个愚蠢的问题。如果有人帮助我理解标记为循环的粗体,我将不胜感激。预先感谢。
for (j = 0; j < 10; ++j)
for (i = 0; i < j; ++i)
numbers[j] = numbers[j] +numbers[i];
上述循环将以数组的特定位置为目标,并将所有数字从第0个位置一一加到所选位置。
最终您不会生成斐波那契数列。
j =0
1, 0, 0, 0, 0, 0, 0, 0, 0, 0
j = 1
1, 1, 0, 0, 0, 0, 0, 0, 0, 0
j = 2
1, 1, 2, 0, 0, 0, 0, 0, 0, 0
j = 3
1, 1, 2, 4, 0, 0, 0, 0, 0, 0
j = 4
1, 1, 2, 4, 8, 0, 0, 0, 0, 0
...so on