【发布时间】:2017-08-19 01:07:33
【问题描述】:
正在查看一些与递归调用相关的 python 代码,并注意到 return 语句看起来很有趣。当下一个递归调用的 return 语句中没有变量赋值时,递归如何工作?
在进行递归调用时,中间求和值没有存储在明显的位置。调试器似乎显示列表每次调用都会减少一个,但我只是不明白中间值的存储位置。
另一个有趣的事情是,一旦进行了最终调用,调试器似乎会最后一次遍历这些值。使用 PyCharm,但不确定这是否重要。
return 语句如何在后续递归中的递归调用期间保存求和值?
def sum_list(list_of_num):
if len(list_of_num) == 1:
return list_of_num[0]
else:
return list_of_num[0] + sum_list(list_of_num[1:])
print(sum_list([4,6,7,3,7,3,2]))
【问题讨论】:
-
这与您在非递归表达式中调用的函数没有什么不同。结果是首先分配给变量还是在没有这种分配的情况下返回并不重要,因为表达式在分配给变量之前以相同的方式计算。
标签: python recursion return-value