我似乎不明白为什么,一旦递归函数满足终止基条件,函数就会继续调用自身并返回调用堆栈。在
下面是用Python 2.7编写的递归函数示例:
text = "hello"
def reverse_string(text):
if len(text) <= 1:
return text
return reverse_string(text[1:]) + text[0]
使用Python visualizer,我了解函数如何使用reverse_string(text[1:])
调用自身,并且每个帧的创建如下:
我的问题是:为什么当基本条件满足时(当text = "o"
)会触发text[0]开始操作?我在想,返回语句/行上的所有代码都将同时工作,不明白为什么reverse_string(text[1:])
先发生,然后{
如果你真的写下这些调用,然后写下每个调用返回的结果,这可能更有意义。从最上面的
reverse("hello")
开始(抱歉,我的懒散输入缩短了reverse_string
):没有更多的调用要进行,因此我们将返回调用堆栈,并在返回时返回连接的结果:
^{pr2}$…并作为对函数最上面的调用的结果返回。在
相关问题 更多 >
编程相关推荐