2016-04-23 230 views
-1

递归乘法 设计一个递归函数,它接受参数x和 y中的两个参数。函数应该返回x乘以y的值。请记住,乘法可以执行如下重复加法: 7×4 = 4 + 4 + 4 + 4 + 4 + 4 + 4Python递归加法

是的,这是我家的工作,就像三个星期前,但我只是不能把这件事情弄清楚。

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) 

这就是我所拥有的,但是如果我把10放在x和10的y上,我就得到1024而不是100.这是怎么回事?

+1

你的方法是不是递归 –

+0

不知道你怎么弄1024;你的发布代码会在x = 10和y = 10时产生9217.在这个点之前它会打印出另外9个数字,但是这些数字都不会等于1024。 –

回答

1

你递增x。因此,10次10​​你开始10,然后添加10 - 1 = 9,使19存储在x。下一次迭代你添加19 - 1 = 18x = 19,所以现在你有x = 37。然后你加37 - 1 = 3637,所以现在你有x = 73。接下来,您将添加72,并且您只需4步即可超过100的真实答案;还有6个去!

将你的总和保存在单独的变量中,并从零开始。添加y到每个时间:

total = 0 
for i in range(x): 
    total = total + y 

print(total) 

没有必要从x减去1,for循环需要为你计算的照顾。

没有一个实际使用递归。这是一个递归版本:

def mult(x, y): 
    if x == 0: 
     return 0 
    return y + mult(x - 1, y) 

所以,如果x是0,没有乘法并返回0,否则你总结yyx - 1乘法。是的,这里减一。

+0

x = 0 y = 0 def mult(x,y): x = int(input(“enter x”)) y = int(input(“enter y”)) total = mult(x, 1) 如果x == 0: 返回0 返回Y + MULT(X - 1,y)的 打印(总) MULT(X,Y) –

+0

@RichardBermudezKenjaTrading移动'输入()'电话* *出的功能。您不想为每次递归调用要求新值。因此,代替'x = 0',使用'x = int(input('Enter x:')','y',*然后*调用'mult(x,y)'函数 –

+0

x = int (输入( “输入x”)) Y = INT(输入( “输入y”)) DEF MULT(X,Y): 总=多重峰(X,1) 如果x == 0: 返回0 回报Y + MULT(X - 1,Y) 打印(多重(X,Y)) MULT(X,Y) –

1

递归是:

mult(x, y) = x + mult(x, y-1) 
    mult(x, 1) = x // This is the base condition 

现在,你应该能够每次添加x - 1给它的时间来实现它

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) return x x =递归(x,y) print “由此产生的价值是” X

  1. 列表项