2016-04-23 224 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. 列表項