有没有一种方法可以递归地遍历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;
    }
}

10-04 21:17