java - 动态嵌套循环

标签 java algorithm dynamic loops nested

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

for(..)
{ for(..){
for(..){....}
.
.
}}

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

10 10 10 
10 10 9
10 10 8
.
.
.
4  4  4 

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

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

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

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      

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

最佳答案

通常当您需要“动态循环”时 - 这是您实际需要的强烈指示 recursion .

例如,在数组 [伪代码] 中查找大小为 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

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

关于java - 动态嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9347503/

相关文章:

java - Canny 边缘检测不检测 100% 水平/未旋转的线

java - 如何从特殊格式的字符串中提取数据

algorithm - 证明 n! = O(n^n)

c++ - UTF-8 表示形式和 unicode 表示形式之间的字符串转换

java - 动态创建 JButton

java - JPA 存储库 Lob 列

java - 删除空格和前导逗号

javascript - 如何在当前迭代中获取下一次迭代的值

c++ - 破解 C++ 动态数组大小

javascript - 在js中使用事件构造函数的一个很好的例子是什么?