Ajaxer

In Javascript we trust

JavaScript als funktionale Programmiersprache – Teil 10 – Rekursion

| 2 Kommentare

Viele Probleme lassen sich elegant durch Rekursion lösen. Eine rekursive Funktion ist eine Funktion, die sich selbst aufruft. Bei jedem Aufruf der Funktion werden Werte auf den Stack gelegt. Rekursive Funktionen mit einer hohen Rekursionstiefe können daher zu einem Stack-Overflow führen. Dies sollte dem Leser bereits bekannt sein.

Das folgende Beispiel berechnet die Fakultät der übergebenen Zahl. Die Fakultät einer Zahl wird sehr schnell sehr groß. Daher passt die Fakultät von 256 nicht in eine JavaScript-Zahl. Bei einer zu hohen Rekursionstiefe bricht die Funktion mit einem RangeError ab.


function factorial(n) {
       if (n < = 1) {
          return 1;
       } else {
          return n * factorial(n-1);
       }
}
console.log("Fakultät von 4: " + factorial(4)); //24
console.log("Fakultät von 256 ist zu groß: " 
  + factorial(256)); // Infinity 
console.log("Die Fakultät von 100000 " 
  + "lässt sich nicht berechnen: " 
  + factorial(100000)); 
  // RangeError: Maximum call stack size exceeded

Der berechnete Wert ist größer als der zur Verfügung stehende Wertebereich, also wird Infinity als Ergebnis geliefert.

Cover-klein in JavaScript als funktionale Programmiersprache - Teil 10 - Rekursion - AjaxerDies ist eine autorisierte Leseprobe aus dem Buch Oliver Ochs – JavaScript für Enterprise-Entwickler: Professionell programmieren im Browser und auf dem Server – dpunkt.verlag GmbH 2012.

Autor: Oliver Ochs

Oliver Ochs ist bei der Management- und IT-Unternehmensberatung Holisticon AG in Hamburg tätig. Er beschäftigte sich in den letzten Jahren mit Content Management Systemen, Webframeworks und Portalen auf Java-Basis. In diesem Umfeld arbeitete er als Entwickler, Architekt und Projektleiter. Er hat darüber hinaus Erfahrungen in Schulungen und Coachings. In letzter Zeit setzte er einen seiner Schwerpunkte auch auf Web- Application-Security, Identity-Management und neue Seiten von JavaScript. Ein anderer persönlicher Schwerpunkt sind agile Methoden und Prozesse

2 Kommentare

  1. To think, I was coseunfd a minute ago.

  2. I hate my life but at least this makes it belrebaa.

Schreib einen Kommentar

Pflichtfelder sind mit * markiert.