【发布时间】:2016-04-07 20:09:51
【问题描述】:
我正在尝试为以下递归程序编写迭代方法。我尝试了多种方法,但无济于事。
我也尝试过谷歌搜索,但无法弄清楚。有人能给我一些关于如何处理它的想法吗?
请注意,我的函数是非尾递归的。在递归结束时我还有一些事情要做
def rec(i,j):
print "Inside funciton ", i, j
if i == 3:
return
if j == 3:
return
rec(i+1,j)
# Some code
rec(i,j+1)
# Some code
rec(0,0)
输出:
Inside funciton 0 0
Inside funciton 1 0
Inside funciton 2 0
Inside funciton 3 0
Inside funciton 2 1
Inside funciton 3 1
Inside funciton 2 2
Inside funciton 3 2
Inside funciton 2 3
Inside funciton 1 1
Inside funciton 2 1
Inside funciton 3 1
Inside funciton 2 2
Inside funciton 3 2
Inside funciton 2 3
Inside funciton 1 2
Inside funciton 2 2
Inside funciton 3 2
Inside funciton 2 3
Inside funciton 1 3
Inside funciton 0 1
Inside funciton 1 1
Inside funciton 2 1
Inside funciton 3 1
Inside funciton 2 2
Inside funciton 3 2
Inside funciton 2 3
Inside funciton 1 2
Inside funciton 2 2
Inside funciton 3 2
Inside funciton 2 3
Inside funciton 1 3
Inside funciton 0 2
Inside funciton 1 2
Inside funciton 2 2
Inside funciton 3 2
Inside funciton 2 3
Inside funciton 1 3
Inside funciton 0 3
【问题讨论】:
-
为什么? (因为有 2 次递归调用,您必须使用一些足够复杂的代码,可能使用堆栈来模拟该递归)...也许您正在寻找 memoization ?
-
谢谢,是的,memoization 也可以,但是我什么时候应该存储结果?...在两个递归调用之后?即在rec(i+1,j) 之后和rec(i,j+1) 之后或者只是在最后就足够了?(即在rec(i,j+1) 之后)?
标签: python loops recursion iteration