Wstęp Rekurencja jest to wywołanie podprogramu (procedury) samej przez siebie. W logo zapis rekurencji będzie wyglądał następująco: oto nazwa_funkcji czynności_wykonywane_przez_procedurę nazwa_funkcji Tak skonstruowana procedura działałaby w nieskończoność. Dlatego przygotowując funkcję rekurencyjną zawsze należy zadbać o istnienie parametru warunkującego kolejne wykonanie procedury. W tym celu można skorzystać z procedury warunkowej jeśli. Ma ona następującą strukturę: jeśli warunek [co_zrobić_gdy_prawda] [co_zrobić_gdy_fałsz] Instrukcja przypisania: przypisz nazwa_zmiennej nowa_wartość Zadania: Używając rekurencji narysuj poniższe figury: Zadanie 1 oto kwadrat :bok if :bok < 10 [stop] powtórz 4 [np :bok pw 90] przypisz "bok :bok - 10 kwadrat :bok Zadanie 2 oto kwadrat1 :bok if :bok < 10 [stop] powtórz 4 [np :bok pw 90] pod np 10 pw 90 np 10 lw 90 opu przypisz "bok :bok - 20 kwadrat :bok
Zadanie 3 oto spirala :r jeśli :r < 0 [stop] powtórz 180 [np :r pw 1] spirala :r - 0.1 oto spirala1 :a Zadanie 4?????? Już oto oczko :r Zadanie 5?????? Już oto spirala2 :a Zadanie 5??????
Zadanie 6 oto kwad :a :n jeśli :n = 0 [stop] powtórz 4 [np :a pw 90] pw 90 np :a lw 90 kwad :a / 2 :n - 1 oto piramida :n :a Zadanie 7?????? a- długość boku kwadratu, n- wysokość piramidy Zadanie 8 Fraktal (łac. fractus złamany, cząstkowy) w znaczeniu potocznym oznacza zwykle obiekt samo-podobny (tzn. taki, którego części są podobne do całości) albo "nieskończenie subtelny" (ukazujący subtelne detale nawet w wielokrotnym powiększeniu). Ze względu na olbrzymią różnorodność przykładów matematycy obecnie unikają podawania ścisłej definicji i proponują określać fraktal jako zbiór, który: ma nietrywialną strukturę w każdej skali, struktura ta nie daje się łatwo opisać w języku tradycyjnej geometrii euklidesowej, jest samo-podobny, jeśli nie w sensie dokładnym, to przybliżonym lub stochastycznym, jego wymiar Hausdorffa jest większy niż jego wymiar topologiczny, ma względnie prostą definicję rekurencyjną, ma naturalny ("poszarpany", "kłębiasty" itp.) wygląd. Dokładniej, fraktalem nazwiemy zbiór który posiada wszystkie te charakterystyki albo przynajmniej ich większość. Na przykład linia prosta na płaszczyźnie jest
formalnie samo-podobna, ale brak jej pozostałych cech i zwyczajowo nie uważa się jej za fraktal. Z drugiej strony, zbiór Mandelbrota ma wymiar Hausdorffa równy 2, taki sam jak jego wymiar topologiczny. Jednak pozostałe cechy wskazują, że jest to fraktal. Zadania: Używając rekurencji narysuj poniższe fraktale: 1. Płatek Kocha Poziom 0 oto koch0 :a np :a Poziom 1 oto koch1 :a np :a / 3 np :a / 3 np :a / 3 np :a / 3 oto koch1 :a koch0 :a/3 koch0 :a/3 koch0 :a/3 koch0 :a/3
Poziom 2 oto koch2 :a oto koch22 :a Zapis rekurencyjny oto koch :n :a jeśli :n = 0 [np :a stop] koch :n - 1 :a / 3 koch :n - 1 :a / 3 koch :n - 1 :a / 3 koch :n - 1 :a / 3 oto koch222 :a koch1 :a/3 koch1 :a/3 koch1 :a/3 koch1 :a/3 koch 3 100 Płatek śniegu oto płatek :n :a powtórz 3 [koch :n :a ] płatek 4 100
2. Drzewo binarne Poziom 0 drzewo0 :a NP :a WS :a Poziom 1 drzewo1 :a NP :a NP :a / 2 WS :a / 2 NP :a / 2 WS :a / 2 WS :a Już drzewo11 :a NP :a drzewo0 :a / 2 drzewo0 :a / 2 WS :a Poziom 2 drzewo 2 :a NP :a NP :a / 2 NP :a/4 WS :a/4 NP :a/4 WS :a/4 WS :a / 2 NP :a / 2 NP :a/4 WS :a/4 NP :a/4 WS :a/4 WS :a/2 WS :a Już drzewo2 :a NP :a NP :a/2 drzewo0 :a/4 drzewo0 :a/4 WS :a/2 NP :a/2 drzewo0 :a/4 drzewo0 :a/4 WS :bok/2 WS :a drzewo2 :a NP :a drzewo1 :a/2 drzewo1 :a/2 WS :a
Zapis rekurencyjny oto drzewo :n :a jeśli :n = 0 [stop] np :a lw 45 drzewo :n - 1 :a / 2 pw 90 drzewo :n - 1 :a / 2 lw 45 ws :a drzewo 8 100 3. Plaster miodu. Poziom 0 oto plaster0 :a powtórz 6 [np :a ] Poziom 1 oto plaster1 :a powtórz 6 [np :a powtórz 6 [np :a / 2 ] ] oto plaster11 :a powtórz 6 [np :a plaster0 :a/2 ]
Poziom 2 oto plaster2 :a powtórz 6 [np :a powtórz 6 [np :a / 2 plaster0 :a/4 ] ] oto plaster2 :a powtórz 6 [np :a plaster1 :a/2 ] Plaster rekurencja oto plaster :n :a jeśli :n = 0 [stop] powtórz 6 [np :a plaster :n - 1 :a / 2 ]
4. Trójkąt Sierpińskiego. Poziom 0 oto dywan0 :a powtórz 3 [np :a pw 120] Poziom 1 oto dywan1 :a powtórz 3 [powtórz 3 [np :a / 2 pw 120] np :a pw 120] oto dywan11 :a powtórz 3 [dywan0 :a/2 np :a pw 120]
Poziom 2 oto dywan2 :a powtórz 3 [powtórz 3 [powtórz 3 [np :a/4 pw 120] np :a/2 pw 120] np :a pw 120] oto dywan22 :a powtórz 3 [dywan1 :a/2 np :a pw 120] Plaster rekurencja oto dywan :n :a jeśli :n = 0 [stop] powtórz 3 [dywan :n - 1 :a / 2 np :a pw 120]
Zadanie: Uzupełnij tabelę o funkcje tak jak w przykładach wyżej wymienionych: Poziom 0 oto rysunek0 :a???? Poziom 1 oto rysunek1 :a???? oto rysunek11 :a???? Poziom 2 oto rysunek2 :a???? oto rysunek22 :a???? oto rysunek222 :a????
Plaster rekurencja oto pit :a :n powtórz 4 [np :a pw 90] jeśli :n = 0 [stop] np :a lw 37 pit :a * 0.8 :n - 1 pw 90 np :a * 0.8 pit :a * 0.6 :n - 1 ws :a * 0.8 lw 90-37 ws :a Programowanie w LOGO KOMENIUSZ grafika żółwia