我必须在python中使用递归函数,下面的代码是一个简化模型。 我希望保留结果列表和字典字典在递归时不生成新的列表或字典,并在递归后返回它,如何解决?
def test(length):
result = []
dict = {}
if length == 10:
return result, dict
else:
result.append(length)
dict[length] = length + 1
test(length + 1)
x, y = test(0)
print x, y
答案 0 :(得分:1)
使用执行递归的辅助函数,以及使用初始默认值调用帮助程序的main函数。
def test(length):
result = []
dict = {}
_test(length, result, dict)
return result, dict
def _test(length, result, dict):
if length == 10:
return
else:
result.append(length)
dict[length] = length + 1
_test(length + 1, result, dict)
x, y = test(0)
print x, y
答案 1 :(得分:0)
我认为你的递归有点破碎。
Python提供了一些其他选项来完成您想要做的事情。我喜欢这种格式:
def t(length, result = [], d = {}):
if length == 10:
return
else:
result.append(length)
d[length] = length + 1
t(length + 1)
return (result, d)
x, y = t(0)
print x, y
数组和字典的初始化仅在解释器看到函数时发生,而不是每次调用函数时都会发生。有关python中默认参数的详细介绍,请参阅此page。
在这种情况下,它们就像附加到函数的数组和字典一样。