我有这段代码:
// Returns the fibonacci range until the specified limit
int fibo(int** output, int limit)
{
// Must be 1 or more
if(limit < 1) return 0;
int* range = (int*)malloc(sizeof(int) * limit);
assert(range);
int i;
// Calculate the range
for(i = 0; i < limit; i++)
{
int value;
if(i == 0) value = 0;
if(i == 1) value = 1;
else value = range[i - 2] + range[i - 1];
range[i] = value;
}
*output = range;
return 1;
}
以限制 15 个输出运行它
65, 1, 66, 67, 133, 200, 333, 533, 866, 1399, 2265, 3664, 5929, 9593, 15522
这根本不对。我怀疑这是因为我正在写像 range[i - 2]
这样的东西,而这不是我应该做的。我尝试使用 int 的大小作为每个值之间的跃点,但出现了段错误。我是否正确使用了 []
?谁能想到我的输出奇怪的任何其他原因吗?
最佳答案
改变
if(i == 1) value = 1;
至
else if(i == 1) value = 1;
编辑: 刚刚意识到这已经在评论中得到了回答。
关于c - 如何对使用 malloc 声明的 int 数组进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7313911/