Python递归添加

时间:2016-04-23 17:40:03

标签: python recursion

递归乘法 设计一个递归函数,接受参数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.这里发生了什么?

3 个答案:

答案 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 - 1python -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

  1. 列表项