python中的加法和乘法不理解代码

2024-06-01 03:35:28 发布

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

有人能帮我一步一步地理解这个函数吗?我已经试了好几个小时了,运气不好。多谢各位

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

    return mult(a,b-1) + a

Tags: ofthe函数basereturnifdefcase
2条回答

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

>>> 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。每次,都会向自身添加一个。当b最终达到1时,递归停止并返回一个值。到那时,a将被添加到b自身中;i、 e.a乘以b

相关问题 更多 >