Rekurencja

Rekurencja to wywoływanie procedury przez samą siebie. Aby rekurencja działała musimy w definicji procedury wywoływać ją samą. Rekurencja podobnie jak instrukcja POWTÓRZ pozwala na wykonywanie ciągu instrukcji, pozwalając nam przy okazji modyfikować parametry kolejnego wywołania samej siebie.

Rekurencje pokażę na przykładzie spirali wykonanej z "kwadratów" oraz piramidy. Na poczatku narysujemy kwadratową spiralę która będzie wyglądała następująco:

Twoja przegądarka nie wspiera elementu canvas! Pobierz Internet Explorer 9 lub nowszą wersję!

Jak widzimy spirala kształtem przypomina kwadrat. Zwrócmy uwagę na cechy szczegółowe, nasz kwadrat nie jest zamknięty a każde następne dwa boki są wiekszę. Nasza procedura będzie rysowała dwa boki a następnie wywołując samą siebie będzie rysować dwa kolejne boki. Zdefiniujmy więc procedurę rekurencyjną która narysuje taką spiralę.

OTO SPIRALA :BOK :WIELKOŚĆ
JEŚLI :WIELKOŚĆ = 0 [STOP] - warunek który zatrzymuje wykonywanie procedury
POWTÓRZ 2[NP :BOK PW 90]
SPIRALA :BOK+15 :WIELKOŚĆ-1 - odpowiada za rekurencyjne wywołanie procedury ale z zmodyfikowanymi parametrami
JUŻ

Twoja przegądarka nie wspiera elementu canvas! Pobierz Internet Explorer 9 lub nowszą wersję!

Teraz napiszemy procedurę która wykożystując rekurencję będzie rysować piramidę złóżoną z kwadratów, tak jak na rysunku.

Twoja przegądarka nie wspiera elementu canvas! Pobierz Internet Explorer 9 lub nowszą wersję!

Jak widzimy na rysunku liczba kwadratów w podstawie jest równa wysokości piramidy. Każdy kolejny poziom piramidy skłąda się z 1 kwadratu mniej i rozpoczyna w połowie pierwszego kwadratu poprzedniego poziomu. Parametr WIELKOŚĆ odpowiedzialny jest za wysokosc piramidy. Dla ułatwienia przyjmiemy stałą wielkość kwadratu. Definicja procedury będzie wyglądać następująco:

OTO PIRAMIDA :WYSOKOŚĆ
JEŚLI :WYSOKOŚĆ = 0 [STOP]
POTWÓRZ :WYSOKOŚĆ [POWTÓRZ 4 [NP 60 PW 90] PW 90 POD NP 60 LW 90 OPU] - odpowiada za narysowanie kwadratów na jednym poziomie
POD NP 60 LW 90 NP (:WYSOKOŚĆ*60)-30 PW 90 OPU - ustawia żółwia w połowie górnej sciany kwadratu tak aby można było rysować kolejny rząd
PIRAMIDA :WYSOKOŚĆ-1
JUŻ