python加法和乘法看不懂代码

python with addition and multiplication not understanding the code

谁能帮我一步一步地理解这个功能,我试了几个小时都没有成功。谢谢。

def mult(a,b):
    # Take care of the base case!!
    if b == 1:
        return a

    return mult(a,b-1) + a

这是一个递归函数,它执行重复加法(这就是乘法)。添加打印语句:

>>> def mult(a, b):
...     print(a, b)
...     if b == 1:
...             return a
...     return mult(a, b - 1) + a
...
>>> mult(3, 5)
3 5
3 4
3 3
3 2
3 1
15

基本情况是 b == 1,请注意您的递归调用将 b 的值减 1,并将输出添加到 a。由于 a 永远不会改变,您所做的就是将 a 加到自身 b 次(同样,这与乘法相同)。

这是一张非常平庸的图表。一开始很难看到,但你最终会得到它。

mult(2, 3) -> mult(2, 2) + 2 ------> 6
                   \        \
                    \        4
                     \      / \
                  mult(2, 1) + 2
                       \        \ 
                        \        \
                     base case -> 2

您正在使用递归将 a 乘以 b。递归是一个相当高级的概念,因此您可能需要了解它。递归的主要思想是函数反复调用自身来解决问题。为了避免无限循环,总有一个基本情况。

在你的例子中,b 从它的原始值开始,每次函数调用自身时减 1。每次都会将 a 添加到自身。当 b 最终达到 1 时,递归停止并返回一个值。届时,a 将已添加到自身 b 次;即 a 乘以 b.