【发布时间】:2021-01-12 13:10:04
【问题描述】:
我有一段代码如下,for 循环的数量由编译时已知的n 决定。每个for 循环都会遍历值 0 和 1。目前,我的代码看起来像这样
for(int in=0;in<2;in++){
for(int in_1=0;in_1<2;in_1++){
for(int in_2=0;in_2<2;in_2++){
// ... n times
for(int i2=0;i2<2;i2++){
for(int i1=0;i1<2;i1++){
d[in][in_1][in_2]...[i2][i1] =updown(in)+updown(in_1)+...+updown(i1);
}
}
// ...
}
}
}
现在我的问题是是否可以将其写成更紧凑的形式。
【问题讨论】:
-
五重嵌套循环?为什么需要“紧凑形式”?这种“紧凑形式”能解决什么问题?
-
我非常肯定,只要从头开始重新实现它试图完成的任何事情,就可以以紧凑的形式重写它。
for循环的永无止境的深渊通常不是问题,问题通常是糟糕的设计,for循环是糟糕设计的表现。 -
我认为他想同时遍历所有变量...
-
递归函数应该有用,而不是嵌套的
for,但看起来很难实现有意义的[]s变量数。 -
n位in_k可以解释为比2^n小一个整数的表示。这允许轻松使用一维数组(向量)d[.],然后按照@MikeCAT 的建议实现递归函数
标签: c++ for-loop nested-for-loop