python - 带有加法和乘法的python不理解代码
问题描述
有人可以帮我逐步理解这个功能,我已经尝试了几个小时没有运气。谢谢你。
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
推荐阅读
- pandas - 熊猫数据框从由标记分隔的csv文件中提取数据并保存到excel表中
- java - 将一个 API 的 requestbody 发送到另一个 API
- ant - 将 .class 添加到 ant 构建类路径
- c - 我可以重新分配()一个未分配的指针吗?
- python - AttributeError:“布尔”对象没有属性“_formatMessage”
- node.js - 在 NestJs 上为单个控制器设置请求正文大小限制
- google-cloud-storage - gsutil:为什么 ls 返回目录本身
- reactjs - Material UI - 扩展面板必须向上扩展,位于页脚中,这样用户就不需要向下滚动
- c - 在 C 中将数据分成块的有效方法是什么?
- python - mysql-connector-c 升级后安装 MySQL-python 包时出错