2016-04-23 12 views
-1

Rekursive Multiplikation Entwerfen Sie eine rekursive Funktion, die zwei Argumente in den Parametern x und y akzeptiert. Die Funktion sollte den Wert von x mal y zurückgeben. Denken Sie daran, Multiplikation kann als wiederholte Addition wie folgt ausgeführt werden: 7 × 4 = 4 + 4 + 4 + 4 + 4 + 4 + 4Python Rekursive Addition

Ja, das ist mein Zuhause Arbeit von wie vor drei Wochen, aber ich kann das Ding nicht herausfinden.

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) 

Dies ist, was ich habe, aber wenn ich 10 für x gesetzt und 10 für yi 1024 erhalten statt 100, was hier vor sich geht?

+1

Ihre Methode nicht rekursiv ist –

+0

nicht sicher, wie Sie 1024 erhalten; Ihr veröffentlichter Code würde 9217 für x = 10 und y = 10 ergeben. Es werden 9 weitere Zahlen vor diesem Punkt ausgedruckt, aber keines davon ist jemals gleich 1024. –

Antwort

1

Sie Inkrementieren x jedes Mal, wenn x - 1, um es hinzuzufügen. Also für 10 mal 10 beginnen Sie mit 10, dann fügen Sie 10 - 1 = 9 hinzu, machen 19 und speichern das zurück in x. Die nächste Iteration, die Sie 19 - 1 = 18 zu x = 19 hinzufügen, haben Sie jetzt x = 37. Dann fügen Sie 37 - 1 = 36 zu 37 hinzu, so dass Sie nun x = 73 haben. Als nächstes würden Sie hinzufügen 72, und Sie sind schon weit hinter der echten Antwort von 100, in nur 4 Schritten; Es gibt noch 6 weitere!

Halten Sie Ihre Summe in einer separaten Variable, und starten Sie das bei Null. In y zu, dass jedes Mal: ​​

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

print(total) 

Es besteht keine Notwendigkeit 1 von x zu subtrahieren, die for Schleife übernimmt für Sie zu zählen.

Nichts davon verwendet tatsächlich Rekursion. Dies ist eine rekursive Version:

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

Also, wenn x 0 ist, gibt es keine Multiplikation ist und Sie 0 zurück, die Sie sonst y die Multiplikation von y und x - 1 summieren. Ja, hier Sie do subtrahieren Sie eine.Hier

+0

x = 0 y = 0 def mult (x, y): x = int (Eingang ("enter x")) y = int (Eingang ("enter y")) Gesamt mult = (x, 1) wenn x == 0: return 0 return y + mult (x - 1, y) Druck (total) mult (x, y) –

+0

@RichardBermudezKenjaTrading den 'Eingang bewegen()' Anrufe * out * der Funktion. Sie möchten bei jedem rekursiven Aufruf nicht nach neuen Werten fragen. Statt 'x = 0' verwenden Sie also' x = int (Eingabe ('Enter x:') ', dasselbe für 'y', * dann * rufen Sie die Funktion' mult (x, y) 'auf –

+0

x = int (Eingang ("geben Sie x")) y = int (Eingang ("enter y")) def mult (x, y): total = mult (x, 1) wenn x == 0: return 0 return y + mult (x - 1, y) print (mult (x, y)) mult (x, y) –

1

Die Rekursion ist:

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

Nun sollten Sie in der Lage sein, es zu implementieren

0

ist der Arbeitscode, I normalerweise verwenden C++ print "Willkommen bei rekursive Funktion" x = Eingang ("Geben Sie den x:") y = Eingang ("Geben Sie den y:")

KONSTANTE = x def rekursive (x, y): wenn y == 0: x = 0 return x wenn y == 1: return x wenn y> 1: x = x + rekursive (x , y-1) zurück x x = rekursiv (x, y) drucken "Der resultierende Wert ist", x

  1. Liste item