在下面的例子中,用5個循環我能夠獲得訪問到多維陣列中的每個單獨的索引。如果我不知道數組的維數,實現和遞歸函數來訪問數組,那麼對於動態系統有什麼辦法嗎? =>遞歸實現for循環。遞歸調用而不是多個for循環調用C++
例如:
index[3] = 0; //=> because it is 3 dimenional all are zero
void recursiveIndexWalk(int i){
a[0] = i;
recursiveIndexWalk(a[1]);
//on the inner last recursive call a[index[0]][index[1]][index[2]] = val;
}
main(){
//my goal is to perform instead of 3 for loops => only one recursive() called
recursive(a[0]);
}
// ========================
unsigned int dimensions = 3; //known
unsigned int dimension_length = { 1, 2, 3}; //known
int a[1][2][3];
int counter = 0;
for (size_t r = 0; r < 1; r++) { //|
for (size_t q = 0; q < 2; q++) { //|
for (size_t p = 0; p < 4; p++) { //|=>recursiveForCall(indexArray)
a[i][j][k] = counter++;
}
}
}
親愛的上帝,你爲什麼需要這麼多維度。 –
你的結構實際上是一棵樹。特殊情況下,同一級別上的每個節點具有相同數量的子節點,因此解決該問題的一個簡單方法是使用某種樹實現。像數組一樣[1] [2] ... - 如何獲得每個數組級別的元素數量? –
解決方案可以用於遞歸方式的2D或3D。 – Alper