如何递归枚举每个元素都有上限的所有可能的数组



例如,我想枚举范围中的所有数组 [0,0,0,0] ~ [3,4,5,6] .

我可以通过循环访问整个可能的情况,但是当我尝试递归实现它时,我的大脑炸了。

我知道我自己也是一种无用的问题,但很好奇。

如果您只想访问每个州一次,那么使用循环会更好、更容易。执行递归版本的一种方法是这样。

bool checkArray(int a, int b, int c, int d) {
    if (d > 6) {
        d = 0;
        ++c;
    }
    if (c > 5) {
        c = 0;
        ++b;
    }
    if (b > 4) {
        b = 0;
        ++a;
    }
    if (a > 3)
        return false;
    if (array[a][b][c][d] == something)
        return true;
    return checkArray(a,b,c,d+1);
}

相关内容

最新更新