递归乘法 设计一个递归函数,接受参数x和中的两个参数 年。该函数应返回x乘以y的值。记住,乘法可以 按以下方式重复添加: 7×4 = 4 + 4 + 4 + 4 + 4 + 4 + 4
是的,这是我三个星期前的家庭作业,但我不能理解这件事。
def mult(x, y):
x = int(input("enter x"))
y = int(input("enter y"))
i = 0
for i in range(y):
x = x + (x - 1)
i = i + 1
print(x)
mult(x, y)
这就是我所拥有的,但是如果我为x放10,为y放10,我得到1024而不是100.这里发生了什么?
答案 0 :(得分:1)
递归是:
mult(x, y) = x + mult(x, y-1)
mult(x, 1) = x // This is the base condition
现在,您应该能够实现它
答案 1 :(得分:1)
每次向x
添加x - 1
时,您都会递增10
。因此,对于10次10,您从10 - 1 = 9
开始,然后添加19
,制作x
,将其存储在19 - 1 = 18
中。您向x = 19
添加x = 37
的下一次迭代,现在您已37 - 1 = 36
。然后,您将37
添加到x = 73
,现在您已72
了。接下来你要添加y
,你已经超过100的真正答案,只需4步;还有6个去!
将您的总和保存在单独的变量中,并从零开始。每次都添加total = 0
for i in range(x):
total = total + y
print(total)
:
x
无需从for
中减去1,def mult(x, y):
if x == 0:
return 0
return y + mult(x - 1, y)
循环会为您计算。
这些都不是实际使用递归。这是一个递归版本:
x
因此,如果y
为0,则没有乘法而你返回0,否则你将y
加到x - 1
和python -u my_background_script.py > errorfile.txt &
的乘法上。是的,这里你做减去一个。
答案 2 :(得分:0)
这是工作代码,我通常使用C ++ 打印“欢迎递归函数” x =输入(“输入x:”) y =输入(“输入y:”)
CONSTANT = x def递归(x,y): 如果y == 0: x = 0 返回x 如果y == 1: 返回x 如果y> 1: x = x +递归(x,y-1) 返回x x =递归(x,y) print“结果值为”,x