动态嵌套循环

Oas*_*asa 5 java algorithm loops nested dynamic

我对编程比较陌生。正如标题所暗示的那样,我需要一种算法来让我获得与可变嵌套循环相同的功能。IE

for(..)
{ for(..){
for(..){....}
.
.
}}
Run Code Online (Sandbox Code Playgroud)

嵌套循环数将根据用户输入而变化。我想要实现的是找到数字的所有组合 (10,9,8,7,6,5,4) 现在我已经阅读了很多。要么我不完全理解它们(我是编程世界的新手)要么它不符合我的目的。我稍后在某些计算中需要这些组合,而不仅仅是打印所有组合。据我所知,一种方法是使用递归。我不完全理解。我试图做一个递归函数,但失败了。这就是我要的

10 10 10 
10 10 9
10 10 8
.
.
.
4  4  4 
Run Code Online (Sandbox Code Playgroud)

数字可以改变(比如 10 10 10 10 , 10 10 10 9 .. )这些组合将存储在一个数组中,因为我以后需要它们进行操作。请保持简单并发表评论。

首选语言是java。任何语言都可以。强烈推荐通用算法。PS 这不是作业。

感谢阿米特。这是工作代码

def findcombinations(array,n,sol,tt=[]):
    if (n== 0):
        tt.append(sol[:])
        return
    for x in array:
        sol.append(x)
        findcombinations(array,n-1,sol,tt)        
        del sol[-1]
    return tt      
Run Code Online (Sandbox Code Playgroud)

调用函数使用 print(findcombinations([1,2],3,[]))

ami*_*mit 5

通常当您需要“动态循环”时 - 这强烈表明您实际上需要递归

例如,查找n数组中数字大小的所有可能组合[伪代码]:

findCombinations(array,n,sol):
   if (sol.size == n): //stop condition for the recursion
      print sol
      return
   for each x in array:
      sol.append(x)
      findCombinations(array,n-1,sol) //recursive call
      sol.removeLast() //cleaning up environment
Run Code Online (Sandbox Code Playgroud)

上面的伪代码将查找并打印由[每个元素可以出现多次]n中的元素组成的所有长度序列array