2016-12-01 2 views
0

Ich habe diesen Code:Rekursion für eine Zahl auf eine Potenzierung

def power(x, n) 
    if n == 1 
    return x 
    else 
    x = x * power(x, n-1) 
    end 
end 

power(4, 4) 
power(2, 3) 
power(10, 3) 
power(25, 2) 
power(6, 5) 

Es nimmt die erste Zahl und wirft es in die 2. numberte Macht. Es funktioniert also für alle, aber ich möchte den Code so schreiben, dass er die Ergebnisse für alle 5 Leistungsfunktionen ausgibt. Wie mache ich das? Ich habe versucht, mit Puts zu ändern, anstatt zurückzukehren, aber ich kann es nicht zum Laufen bringen.

+1

Ich nehme an, Sie möchten dies mit Rekursion tun, aber es gibt auch andere Möglichkeiten, wie zum Beispiel 'x = 2; n = 3; n.Verkleinerung (1) {| t, _ | v = x * t; setzt v; v} # => 8', die '2', '4',' 8' auf separaten Zeilen druckt. –

Antwort

2

Sie haben eine Variable x, die auf das Ergebnis des Methodenaufrufs zeigt. Sie können dies drucken und dann von der Funktion zurückgeben:

def power(x, n) 
    if n == 1 
    return x 
    else 
    x = x * power(x, n-1) 
    puts x 
    x 
    end 
end 
+0

Der Code würde für n == 0 fehlschlagen, und Sie vergessen, die 'puts' zu entfernen (ich denke, Sie hatten es zum Testen dort), aber abgesehen davon: Warum eine rekursive Methode ausrollen, wenn man einfach a 'x ** n'? – user1934428

+0

Dies ist OPs-Code, kopiert-eingefügt, mit einem 'puts' hinzugefügt, weil die Frage angegeben, dass ein Ziel war. Ich habe nur versucht, die Frage hier zu beantworten. –

Verwandte Themen