ich mich nicht in der Lage hat dieses Beispiel einer rekursiven Funktion zu verstehen:Wie funktioniert diese rekursive Funktion lösen und warum tut er ausgegeben, was es tut
function foo(i) {
if (i < 0)
return;
console.log('begin:' + i);
foo(i - 1);
console.log('end:' + i);
}
foo(3);
Die Ausgabe lautet:
begin:3
begin:2
begin:1
begin:0
end:0
end:1
end:2
end:3
Ich verstehe Wie normal und verschachtelte Funktionen funktionieren, und ich denke, die return;
hier soll die Funktion beenden, wenn i
wird niedriger als 0
, also wenn i = -1
, die erste console.log()
nicht angezeigt, aber warum nach foo(-1 - 1)
wir erhalten die Ausgabe end:0
?
es ist i-1 nicht -1-1 und in i = -1 wird nichts ausgegeben – paolobasso
Auf Ihrem Code, wenn Sie 'foo (-1-1)' oder 'foo (-2)' Sie erhalten ' undefiniert. –
Wenn "i = -1", kehrt die Funktion sofort zurück und es wird überhaupt nichts angezeigt. Es ruft nie 'foo (-1 - 1)' auf, stattdessen kehrt es dorthin zurück, wo es aufgerufen wurde - was die Zeile 'foo (i - 1)' in dem Aufruf ist, wo 'i' '0' war. – Bergi