首页 > 解决方案 > 带有加法和乘法的python不理解代码

问题描述

有人可以帮我逐步理解这个功能,我已经尝试了几个小时没有运气。谢谢你。

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

    return mult(a,b-1) + a

标签: pythonfunctionrecursionmultiplicationaddition

解决方案


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

>>> 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,请注意您的递归调用将 的值减少b1,并将输出添加到a。因为a永远不会改变,所以你所做的就是将时间a加到自身上b(同样,这与乘法相同)。

这是一个非常平庸的图表。一开始很难看到,但最终你会明白的。

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

推荐阅读