2016-05-04 7 views
-3

Warum im Argument Abschnitt passiert Multiplikation, innerhalb else Anweisung?Warum im Argument Abschnitt passiert Multiplikation (Rekursion)?

function main(x, y) { 
    if (y === 0) { 
     return 1; 
    } else { 
     return x * main(x, y - 1); // Why in argument section is happen multiplication 
    } 
} 
main(2, 3); 
+0

was möchten Sie genau gelöst bekommen? das ist eine rekursive Funktion, die eine Multiplikation von x und das Ergebnis des Aufrufs der Funktion selbst mit x und y-1 zurückgibt. –

+0

Das Ergebnis ist 16. – TomSlick

+0

'main === Math.pow' für ganze Zahl x und nicht negative ganze Zahl y ... –

Antwort

0

Ich nehme an diesem Code tut, was Math.pow() Funktion hat (in einer anderen Art und Weise). Das erste Argument ist die Basis und das zweite Argument ist die Potenz. main(x, y) hier erhöht x auf y, was durch Multiplikation x, y mal erreicht werden kann.

Ich werde versuchen, diese mit jedem Durchgang zu erweitern: -

  1. main (2,3); gibt 2 * main zurück (2, 2);

  2. main (2, 2); Rückkehr 2 * Haupt (2, 1);

  3. main (2, 1); Rückkehr 2 * Haupt (2, 0);

  4. main (2, 0) zurück 1;

Unter Verwendung von (2), (3), (4) in (1) erhalten wir:

2 * 2 * 2 * 1;

0

Es ist eine rekursive Funktion, ohne die Überprüfung für y == 0 würde die Funktion nie aufhören.

Nun ist es wie dieser

2 * (2 * (2 * (2 * 1))) 

berechnet Wo y

 3 2 1 0 
-1

ist, weil das ist, wie Sie Exponenten berechnen.

+1

Ähm,' x^1 = x' ... –

+0

@NiettheDarkAbsol Ja, ich habe gerade meine realisiert Fehler.... – Feathercrown