Rolf B: JS rekursive Aufrufe

Beitrag lesen

Hallo Emil,

this bezeichnet niemals die Funktion selbst, damit kommst Du also nicht weiter.

Die anderen haben Arrow-Funktioen verwendet, mir ist aber jetzt nicht aufgefallen, dass das für Dich eine Voraussetzung ist. Vor allem ist die Anwendung von U oder Y Kombinatoren etwas, wobei sich mir die Fußnägel aufrollen, das scheint ganz tief aus der Trickkiste der funktionalen Theorie zu kommen.

Eine reguläre benannte Funktion willst Du sicherlich nicht haben. Damit wär's ja trivial.

Aber auch eine anonyme Funktion kann einen lokalen Namen haben, der dann nur in dieser Funktion bekannt ist. Das geht so:

let fak = function fakultät(x) { return x * fakultät(x-1); }

console.log(fak(3));      // 6
console.log(fakultät(3)); // Error, fakultät unbekannt

Sowas kann auch Methode eines Objekts sein oder eine Funktion, die als Parameter übergeben wird:

let obj = {
   fak: function fakultät(x) { return x * fakultät(x-1); }
};

someOtherFunc(function fakultät(x) { return x * fakultät(x-1); });

Bei Methoden musst Du bei diesem Vorgehen aufpassen - sobald der rekursive Abstieg beginnt ist das this des Objekts nicht mehr definiert.

Ob das so passt, kann ich ohne Kenntnis der Umstände, unter denen Du das brauchst, nicht sagen.

Rolf

--
sumpsi - posui - clusi