Einfache Neugier: Ich habe dieses Skript gefunden, die im Grunde alle natürlichen Zahlen erzeugt:erzeugen alle natürlichen Zahlen in js mit Generatoren und Rekursion, verschiedene Ansätze
function *naturalNumbers() {
function *_naturalNumbers(n) {
yield n;
yield *_naturalNumbers(n + 1);
}
yield* _naturalNumbers(1);
}
const nats = naturalNumbers();
console.log(nats.next().value) // 1
console.log(nats.next().value) // 2
console.log(nats.next().value) // 3
Ich verstehe nicht, warum es benutzt eine innere Funktion. Ich habe versucht, die Funktion auf diese Weise neu zu schreiben und scheint funktioniert:
function *naturalNumbers(n) {
yield n;
yield *naturalNumbers(n + 1);
}
Ist mein Umschreiben der Funktion falsch? Gibt es einen besonderen Grund, warum der Programmierer die Funktion so geschrieben hat?
Beziehen Sie sich auf die Tatsache, dass Sie das '*' bewegt haben? – Olian04
@ Olian04 Sieht aus wie das OP es so hatte '* naturalNumbers'. –
@PraveenKumar, die von Ihnen bearbeitet wurde ... – Olian04