以递归方式查找arraylist中的所有组合

All*_*age 7 java recursion

我完全迷失了.我可以迭代地执行此操作,但递归对我来说是新的.如果我给它一个1,2,3的arylylist,那么重复的总可能组合是27.

111,112,113,121,122,123等......

我如何递归地找到它?我会展示我的代码,但我甚至没有接近这个概念......

小智 0

这是我刚刚用 python 编写的硬编码解决方案,但它应该演示原理:

def combinations(original,indexes):
    indexes[2] = indexes[2] + 1
    if(indexes[2] == 3):
        indexes[1] = indexes[1] + 1
        indexes[2] = 0

    if(indexes[1] == 3):
        indexes[0] = indexes[0] + 1
        indexes[1] = 0

    if(indexes[0] != 3):
        print str(original[indexes[0]]) + str(original[indexes[1]]) \
            + str(original[indexes[2]])
        combinations(original, indexes)


combinations([1,2,3],[0,0,0])
Run Code Online (Sandbox Code Playgroud)

请注意我如何拥有函数组合()。该函数将原始数组作为参数,并使用第二个数组来跟踪索引。

当我调用函数来启动它时,我将索引数组初始化为全 0。

在堆栈中的每个函数中,您应该增加索引数组中的索引以产生正确的输出。请注意,在我的解决方案中,我如何使用三个 if 语句,这是硬编码部分。这可能可以通过 for 循环来完成。

最后,使用修改后的索引数组再次在其内部调用combinations()函数(递归),直到满足end子句(第一个索引已最大化)。

当我看到您标记为 java 时,此代码片段应作为指南