Man kann Prozeduren auch sich selber wieder aufrufen lassen - dies nennt sich Rekursion. Dabei ist nat"urlich darauf zu achten, dass dies nicht unendlich oft geschieht, sondern auch irgendwann endet.
Beispiel: Es soll das Kapital berechnet werden, wenn ein Anfangskapital mehrere Jahre bei gleichem Zinssatz verzinst wird.
to zinseszins :k :n :p ifelse (:n > 0) [ output zinseszins (:k*(1+:p)) (:n-1) :p ] [ output :k ] end
Damit kann nun bei einem Kapital von berechnet werden, was man nach Jahren bei hat:
? print zinseszins 100 10 0.05 162.889462677744
zinseszinsgewinn
, die den Gewinn bei einer derartigen Geldanlage berechnet!
potenz
, die durch Rekursion die Potenz f"ur eine nat"urliche Zahl berechnet!
Beispiel: Sierpinski-Dreieck
Unter dem Sierpinski-Dreieck versteht man eine Figur, die dadurch entsteht, dass man
to sierpinski :s ifelse (:s > 20) [ repeat 3 [sierpinski (:s/2) fd :s*2 rt 120] ] [ repeat 3 [repeat 3 [fd :s rt 120] fd :s*2 rt 120] ] end
Der Aufruf sierpinski 100
liefert folgendes Bild:
koch
, die die Koch-Kurve zeichnet!
kochflocke
, die Koch-Kurven so zusammensetzt, dass eine Schneeflocke erkennbar wird.
Man kann auf sehr einfache Weise durch Rekursion Muster erzeugen:
to spirale :s :w fd :s rt :w spirale :s (:w+10) end
Beispiele:
spirale 20 20 |
spirale 30 1 |
spirale 14 3 |