Ich gehe durch die Übungen von http://eloquentjavascript.net/03_functions.html und habe Schwierigkeiten, einen bestimmten Teil der Rekursion Übung zu verstehen. Die Übung fordert an, basierend auf einem als Parameter eingegebenen Wert "Wahr" oder "Falsch" zu drucken.Rückgabe isEven (-number); Eloquent Javascript
Nachdem ich diese Übung versucht hatte, erkannte ich, dass ich die falsche Technik verwendet hatte und nach der Lösung war ich verwirrt darüber, wie die zweite else if-Anweisung funktioniert, die überprüft, ob der eingegebene Parameter ein Minuswert ist.
function isEven(number){
if (number == 0){
return true;
} else if (number == 1){
return false;
} else if (number < 0){
return isEven(-number);
} else {
return isEven(number -2);
}
}
console.log(isEven(-2)); // true
console.log(isEven(-5)); // false
Ich bin verwirrt, wie der negativer Wert von selbst zB subtrahiert wird return isEven(-number)
, einen true
oder false
Wert. zB -5 -(-5) = 0
, so wird dies true
zurückgeben aber -5
ist kein gerader Wert, es ist ungerade.
Könnte ich eine Erklärung erhalten, wie dieser rekursive Code mit einem Minus-Parameter funktioniert?
console.log (Nummer) – epascarello
'-Nummer' bedeutet ** multiplizieren mit -1 **. Warum denkst du, dass es ** von sich selbst abzieht **? – Leo
Guter Kummer! Das ist ohne Zweifel das absolut schlechteste *** Beispiel für Rekursion, das ich je gesehen habe. Ich würde dem eloquenten JS-Buch nicht allein vertrauen, da es offensichtlich ist, dass der Autor viel zu faul ist, um anständige Beispiele zu finden. – paxdiablo