【发布时间】:2019-04-04 02:37:57
【问题描述】:
我有一个未知数量的整数变量,它们的范围可以从 [0,9] 我想遍历这些值的所有排列。
如果变量的数量是恒定的,那么编写嵌套的 for 循环会很容易。我想出了一个递归函数,可以做我想做的事,但很好奇是否有办法迭代地做。
def nested(array,index):
n = len(array)
for i in range(10):
array[n-index]=i
#len(array-1) end of array
if(index == 1):
print(array)
#do something later
else:
nested(array,index-1)
#generate all permutations, change n to change size of list.
n = 4
array = [0]*n
nested(array,len(array))
我尝试使用此处找到的所谓“简单方法”-> http://blog.moertel.com/posts/2013-05-11-recursive-to-iterative.html 但我无法让它工作。
【问题讨论】:
-
请在您链接的博客中更具体地说明哪些内容不起作用。据我所知,这篇文章很好地涵盖了迭代到递归,请努力更新问题。
-
这里没有真正的“秘密”。该博客文章中解释的大部分内容适用于线性递归算法(在链表中搜索项目),而不是分支递归算法(在图中搜索路径)。排列问题是后者(一棵树)。将这种形式的递归算法转换为迭代版本的最简单方法是使用堆栈/队列数据结构。从堆栈中弹出一个元素。对其进行操作。将分支节点推到上面。堆栈为空时退出。
-
... 例如,从这里比较深度优先搜索的递归和迭代伪代码。 en.m.wikipedia.org/wiki/Depth-first_search
标签: python recursion iteration