【发布时间】:2021-01-03 14:00:43
【问题描述】:
我正在将我们代码库中的一些递归调用转换为迭代。感谢this blog 和this question,这非常简单。但是,有以下模式(作为一个最小的例子),这让我很难过。它基本上给出了m位置中n数字的n^m排列(重复)(这里是n=4,m=3):
def f (i, arr):
if i < len(arr):
for j in [2,3,5,8]:
arr[i] = j
f(i+1, arr)
else:
print(arr)
f(0, [0,0,0])
哪个输出:
[2, 2, 2]
[2, 2, 3]
[2, 2, 5]
...
[8, 8, 3]
[8, 8, 5]
[8, 8, 8]
根据this discussion,这应该是可能的。如果有人可以分享一些关于如何进行此转换的指导,那就太好了?
【问题讨论】:
-
你能把函数修改为不使用循环,而只使用递归吗?那会更容易转换。
标签: python algorithm recursion iteration enumeration