【发布时间】:2015-11-02 12:00:03
【问题描述】:
我正在做一个编程练习,我必须使用循环(非递归)来实现斐波那契数列。
虽然它无论如何都不完美,但我遇到的主要问题是我的算法。
因为变量 intBuffer 被分配了一个指针,所以它会随着 intArray[1] 的值的变化而变化,而不是保留之前的值,然后再将其分配给内存位置 intArray[0]。
我曾尝试使用* 前缀来获取数据值而不是内存位置,但这会产生错误:
错误:一元'*'的无效类型参数(有'int')
代码如下:
#include <stdio.h>
int main(void)
{
int intArray[1];
int intRounds, intIndex, intBuffer;
printf("How many iterations would you like me to calculate? \n");
scanf("%d", &intRounds);
intArray[1] = 1;
intArray[0] = 0;
for (intIndex = 0; intIndex <= (intRounds - 1); intIndex++)
{
intBuffer = intArray[1];
intArray[1] = intArray[1] + intArray[0];
intArray[0] = intBuffer;
printf("Iteration %d: %d \n", (intIndex + 1), intArray[1]);
}
return 0;
}
【问题讨论】:
-
贴出有问题的代码
-
你想要
int intArray[2]。规则很简单:N元素的数组从0索引到N-1。如果您需要arr[0]和arr[1],arr需要为 2 个元素。
标签: c arrays loops for-loop fibonacci