【发布时间】:2017-07-13 04:01:19
【问题描述】:
我编写了一个递归函数来访问数组元素。每 2 次、3 次、4 次,以此类推到 150 次。我想做同样的事情,但要进行迭代。我在下面编写了一些代码,它运行的第一个示例,但我不确定它是否正确并且与第一个函数的工作方式相同。我知道我正在使用两个 for 循环来执行此操作,我可能将索引 var 放置在错误的位置。
void openarray(skip)
{
int i;
for(i = skip; i < 150; i+=skip + 1)
{
if(arrayB[i] == open)
{
arrayB[i] = close;
}
else
{
arrayB[i] = open;
}
}
if(skip < 150)
{
openarray(skip + 1);
}
}
我的代码变成了迭代,我想我可能混淆了 step 的索引,反之亦然。
int i, j;
for(i = 0; i < 150; i++)
{
for (j = 0; j < 150; j+=i + 1)
if(arrayB[i] == open)
{
arrayB[i] = close;
}
else
{
arrayB[i] = open;
}
}
【问题讨论】:
-
“我不确定它是否正确并且与第一个函数一样工作”。这就是测试的目的。设计您的测试并运行它们。如果结果错误,那么您就知道代码不正确。然后从那里开始调试。在 Stackoverflow 上发帖并不是测试或调试的第一步。
-
@kaylum 我试过一整天我一直在打印所有索引并跳过我无法弄清楚你不认为我一直在测试和尝试粗鲁假设的事情......
-
那你为什么不这么说呢?分享您的测试结果 - 输入、预期输出、实际输出。这和minimal reproducible example 是所有 SO 问题都应该有的,以帮助读者了解您的具体问题。
标签: c for-loop recursion iteration