Im ein codewars Problem zu lösen und im ziemlich sicher, ich habe es funktioniert:Javascript rekursive Funktion gibt keinen Wert zurück?
function digital_root(n) {
// ...
n = n.toString();
if (n.length === 1) {
return parseInt(n);
} else {
let count = 0;
for (let i = 0; i < n.length; i++) {
//console.log(parseInt(n[i]))
count += parseInt(n[i]);
}
//console.log(count);
digital_root(count);
}
}
console.log(digital_root(942));
Im Wesentlichen ist es angeblich eine „digitale Wurzel“ zu finden:
Eine digitale Wurzel ist die rekursive Summe aus alle Ziffern in einer Nummer. Gegeben n, nimm die Summe der Ziffern von n. Wenn dieser Wert zwei Ziffern hat, wird die Reduzierung auf diese Weise fortgesetzt, bis eine einstellige Zahl produziert wird. Dies gilt nur für die natürlichen Zahlen.
Also im Moment die richtige Antwort am Ende bekommen, aber aus irgendeinem Grunde auf der if
Anweisung (die die Debugger laufen aufpassender und es macht diese Aussage geben Sie ihm den Rückgabewert sagen wird der korrekte Wert ist.
Aber dann springt er aus der if
Aussage und versucht, von der Haupt digital_root
Funktion zurückzukehren?
Warum ist das? sollte es nicht aus diesem brechen, wenn es die if
Aussage trifft? im verwirrt, warum versuchen, es zu springen aus dem if
Stateme nt und dann versuchen, nichts von digital_root
zurückgeben, so dass der Rückgabewert endet undefiniert ist?
Mist, im nicht super gewöhnt Rekursion. Ich denke ... kannst du erklären, warum wir das zurückgeben? Liegt es daran, dass du den Wert von der "Zukunft" zu mir selbst zurückbringst? – msmith1114
@ msmith1114 Überprüfen Sie die Erklärung! Ich hoffe es ist nützlich. –