【发布时间】:2013-05-21 21:21:07
【问题描述】:
在以下示例中,通过 5 个循环,我能够获取每个单独的索引以访问多维数组。如果我不知道数组的维度,动态系统有什么办法,实现和递归函数来访问数组。 => 递归实现 for 循环。
例如:
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++;
【问题讨论】:
-
天哪,你为什么需要这么多维度。
-
你的结构实际上是一棵树。特殊情况,同一级别上的每个节点都有相同数量的子节点,因此解决问题的一种简单方法是使用一些树实现。使用像 a[1][2]... 这样的数组 - 你如何获得每级数组的元素数量?
-
解决方案可以递归方式用于 2d 或 3d。?
标签: c++ multidimensional-array recursive-datastructures