有没有一种方法可以递归地遍历n维数组(其中n是变量)而无需?目前,我正在使用C++,但是我猜几乎所有语言都可以提供答案。
编辑:实际上,我真正的问题有点不同:我实际上想枚举数组的索引。简单的2D示例,带有2x2数组:0,0; 0,1; 1,0; 1,1。
最佳答案
void iterate(const std::vector<int> &dims)
{
std::vector<int> idxs(dims.size());
while (1)
{
// Print
for (int i = 0; i < dims.size(); i++)
{
std::cout << idxs[i] << " ";
}
std::cout << "\n";
// Update
int j;
for (j = 0; j < dims.size(); j++)
{
idxs[j]++;
if (idxs[j] < dims[j]) break;
idxs[j] = 0;
}
if (j == dims.size()) break;
}
}