我有这些嵌套的循环:可变数量的头部和尾部嵌套循环
void fun() {
int n = 5;
int c = 0;
for (int i = 0; i < n; i++) {
head_function(i, c);
for (int j = 0; j < n; j++) {
head_function(j, c);
for (int w = 0; w < n; w++) {
head_function(w, c);
for (int x = 0; x < n; x++) {
head_function(x, c);
c++;
body(c);
tail_function(x, c);
}
tail_function(w, c);
}
tail_function(j, c);
}
tail_function(i, c);
}
}
它并不真正的问题是什么的头部和尾部的功能来做,只要他们能够跟踪其指标我,j,w,x。
我想要的是有一个任意数量的嵌套for循环,而不是只有四个。
我在这里找到的其他解决方案并不适合我,因为他们不包括头部和尾部功能,我猜。
使用递归方法和递归深度作为参数。 –
推荐使用递归,因为大多数硬件专门处理堆栈内存,不需要的递归往往比其他方法使用更多的堆栈内存。您可以使用单个循环和一个数组来保留任意数量的索引。编码比较复杂,但如果你的“深度”很大,最好用这种方法编码。 – markspace
@markspace现在这对你来说是不成熟的优化。一个人应该写出清晰简洁的代码,递归在这里是很自然的,如果OP是4深的,他可以在它成为问题之前多加倍。您甚至可以通过增加VM堆栈内存来延长修复时间。 – Sylwester