【发布时间】:2015-08-17 01:56:16
【问题描述】:
这里是 Python/CS 新手,试图了解特定递归函数是如何“在后台”工作的,即函数的堆栈帧如何操作以及它们“持有”什么值。
我知道这里有很多关于递归函数的文章/发布,并且有说明它们如何工作的示例,但是递归的概念以及堆栈如何工作/它们在递归函数中的作用有点棘手,并且我没有找到任何清晰简洁的解释。
假设我们有以下递归函数可以反转字符串中的字符:
text = "hello"
def reverse_string(text):
if len(text) <= 1:
return text
return reverse_string(text[1:]) + text[0]
哪个输出:olleh
我认为reverse_string(text[1:]) 的框架如下工作:
Global frame
text "hello"
reverse_string
reverse_string
text "hello"
reverse_string
text "ello"
reverse_string
text "llo"
reverse_string
text "lo"
reverse_string
text "o"
Return
value "o"
但是在返回值"o" 并且满足终止基本条件之后会发生什么? text[0] 在函数中是如何工作最终到达"olleh" 的?
【问题讨论】:
标签: python function recursion stack frame