在查找阶乘数时无法理解 python 中没有循环函数的函数如何循环

Cannot understand how is a function looped without loop function in python while finding factorial number

def factorial(num):
    if num == 0:
        return 1
    return num * factorial(num-1)

print('Enter an integer')
num = int(input())
print(factorial(num)

如果我输入数字 4,输出是 24

在上面的代码块中,我无法理解第 4 行。

虽然没有任何循环,但是这个函数是如何将所有数字相乘的 在给定的数字和 returns 我们期望的值下?

在脑海中执行。例如 - factorial(2) 是什么? 2 不是 0,所以是 2 * factorial(1)。现在什么是 factorial(1)? 1仍然不是0,所以是1 * factorial(0)。什么是 factorial(0)?现在 0 是 0,所以我们知道它是 1。现在向后插入我们缺失的部分:如果 factorial(0) 是 1,那么 factorial(1)1 * 1,那么 factorial(2)2 * 1 * 1.

对于 recursion,有一个已知的基本(或终止)案例,所有其他案例都简化为接近基本案例的更简单的问题。知道factorial(23)才知道factorial(24),知道factorial(22)才知道factorial(23)……但无条件地知道factorial(0)。如果没有终止情况,那么你会得到一个无限循环的等价物 - 一个无限递归。

要理解递归,首先要理解递归。