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