【发布时间】:2016-10-09 20:51:03
【问题描述】:
所以我遇到的问题是我想通过以下方式实现 N 个 for 循环(其中 N 是一个变量):
for i0=0:MAX
cOR[0] = initial + move[i0];
for i1=0:MAX
cOR[1] = cOR[0] + move[i1];
....
some other stuff inside the final loop
(cOR是一个长度等于for循环次数的向量)
所以我发现这个解决方案在您只有嵌套循环 (https://stackoverflow.com/a/20577981/3932908) 时有效,但一直在努力为我的特殊情况修改它,因为我需要在 for 循环之间添加代码。有没有一种简单的方法来实现这一点,还是需要一种不同的方法?
【问题讨论】:
-
什么?您不能让实际循环的数量(源代码中
fors 的数量)取决于某个运行时值。 C是一种编译语言,它不能那样工作。这听起来像XY problem。 -
您无法实现具有可变深度的嵌套循环。如果你真的想要,你可以进行递归。
-
我同意:这听起来像是 XY 问题。您要解决的真正问题是什么?
-
您可以轻松地递归循环遍历未知大小的嵌套数据,而无需使用称为递归函数的本质上可怕的语言“功能”。你只需要一些方法来返回到之前的迭代级别,就是这样。
-
好的,所以我意识到没有办法直接实现这一点,但我提供的链接显示了一个解决方案,它模拟了这一点,但仅适用于嵌套循环之间没有代码的情况。看起来应该很容易概括,但我还没有弄清楚。