我有這些嵌套的循環:可變數量的頭部和尾部嵌套循環
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