在else块中进行递归函数调用

时间:2018-10-05 02:43:01

标签: python-3.x

递归函数调用如何工作?这是我想要理解的代码片段。

def some_func(num):
    if num == 3:
        print (num)
    else:
        num += 1
        some_func(num)
        print('final')

some_func(0)

输出:

3
final
final
final

我认为在达到num == 3的if条件之后,它只会在if块内执行print语句并退出,但会继续执行三次print('final')语句。为什么?

1 个答案:

答案 0 :(得分:0)

我相信其他3个“决赛”分别代表0、1和2。最后打印3时,该函数返回到其parent(2),然后继续打印“最终”,然后返回其parent(1)。重复执行直到num == 0时最终返回到呼叫。