了解使用拼接的递归函数的控制流

2024-04-25 01:03:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我似乎不明白为什么,一旦递归函数满足终止基条件,函数就会继续调用自身并返回调用堆栈。在

下面是用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:])调用自身,并且每个帧的创建如下:

^{pr2}$

我的问题是:为什么当基本条件满足时(当text = "o")会触发text[0]开始操作?我在想,返回语句/行上的所有代码都将同时工作,不明白为什么reverse_string(text[1:])先发生,然后{}-还有,为什么在满足基本条件时{}被激活?在


Tags: 函数text示例hellostringlenreturnif
1条回答
网友
1楼 · 发布于 2024-04-25 01:03:21

如果你真的写下这些调用,然后写下每个调用返回的结果,这可能更有意义。从最上面的reverse("hello")开始(抱歉,我的懒散输入缩短了reverse_string):

1: return reverse('ello') + 'h'
2:    return reverse('llo') + 'e'
3:       return reverse('lo') + 'l'
4:          return reverse('o') + 'l' 
5:             return 'o'

没有更多的调用要进行,因此我们将返回调用堆栈,并在返回时返回连接的结果:

^{pr2}$

…并作为对函数最上面的调用的结果返回。在

相关问题 更多 >