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.
谁能帮我一步一步地理解这个功能,我试了几个小时都没有成功。谢谢。
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.