Rekursion: Unterschied zwischen den Versionen

Aus HeiseForenWiki
Zur Navigation springen Zur Suche springen
(Fakultät iterativ zu lösen)
K (etwas umformuliert)
Zeile 10: Zeile 10:


die Rechenvorschrift besagt, daß die Fakultät von n 1 ist, wenn n == 1 ist, sonst muss n mit der Fakultät von (n -1) multipliziert werden.
die Rechenvorschrift besagt, daß die Fakultät von n 1 ist, wenn n == 1 ist, sonst muss n mit der Fakultät von (n -1) multipliziert werden.
Das funktioniert tadellos, braucht aber viel Stack-Space, weshalb die Fakultät entgegen des Eindrucks, den die fortwährende Erwähnung als Paradebespiel für Rekursion erweckt, eleganter und billiger iterativ lösbar ist.
Das funktioniert tadellos, braucht aber viel Stack-Space.
 
<br> Deshalb ist die Funktion 'Fakultät' in modernen Sprachen auch eigentlich immer iterativ implemtiert. Die fortwährende Erwähnung dieser Funktion als Paradebespiel für Rekursion ist vermutlich auf Undercoveraktionen verdeckt arbeitender ehemaliger [[Lisp]]ler zurückzuführen.




==Weblinks==
==Weblinks==
* [http://de.wikipedia.org/wiki/Rekursion Wikipedia:Rekursion]
* [http://de.wikipedia.org/wiki/Rekursion Wikipedia:Rekursion]

Version vom 19. März 2004, 10:09 Uhr

bitte unter Rekursion nachschauen.

rekursiv bedeutet: 'auf sich selbst bezogen'. Gemeint ist z.B. folgendes: die 'Fakultät' ist das Produkt einer Zahl mit allen ihren Vorläufern bis 1.
in einer Sprache wie Lisp, die rekursive Definitionen zulässt, kann die Fakultät so definiert werden:

(defun fak(n) (if (eq n 1) 1 (mul n (fak (sub1 n)))))

die Rechenvorschrift besagt, daß die Fakultät von n 1 ist, wenn n == 1 ist, sonst muss n mit der Fakultät von (n -1) multipliziert werden. Das funktioniert tadellos, braucht aber viel Stack-Space.
Deshalb ist die Funktion 'Fakultät' in modernen Sprachen auch eigentlich immer iterativ implemtiert. Die fortwährende Erwähnung dieser Funktion als Paradebespiel für Rekursion ist vermutlich auf Undercoveraktionen verdeckt arbeitender ehemaliger Lispler zurückzuführen.


Weblinks