我有一个调用自身来递增和递减堆栈的函数。
我需要多次调用它,我希望它在后续调用中以相同的方式工作
但是,正如预期的那样,它不会重新使用默认值。
我读到这是一个新手陷阱,我也看到了建议的解决方案,但我没能做到
使任何解决方案都有效。
如果能够“fun.reset”就好了
def a(x, stack = [None]):
print x,' ', stack
if x > 5:
temp = stack.pop()
if x <=5:
stack.append(1)
if stack == []:
return
a(x + 1)
print a(0)
print a(2) #second call
print a(3) #third call
我希望这会起作用,但它不会。
print a(0, [None])
print a(2, [None]) #second call
print a(3, [None]) #third call
我可以将函数重置为初始状态吗?
如有任何帮助,我们将不胜感激。
请您参考如下方法:
递归调用时显式传递堆栈:
def a(x, stack=None):
if stack is None:
stack = [None]
...
a(x + 1, stack)
