14. Rekursja
W lekcji "Żółw się uczy" zobaczyliśmy, jak możemy nauczyć żółwia nowych słów za pomocą polecenia do Możemy również nauczyć żółwia nowego polecenia, używając oto według parametru, np. oto z wyprzedzeniem : NAZWA_PARAM np : NAZWA_PARAM .
Żółw będzie teraz oczekiwać otrzymania parametru (wartości) po tym, jak otrzyma nowe polecenie "postęp". Na przykład: postęp 40.
Naucz żółwia, czym jest posuwanie się naprzód z parametrem o nazwie \"rozmiar\"
Jak widzieliśmy w poprzednim kroku, możemy nauczyć żółwia robić działania, które sprawiają, że oczekuje parametru (wartości). Jak widzieliśmy na poprzednich lekcjach, aby nauczyć żółwia, jak narysować kwadrat, powinniśmy wpisać polecenia: oto kwadrat :rozmiar powtórz 4 [ np :rozmiar pw 90] już.
Naucz żółwia polecenia kwadrat. Niech oczekuje ono parametru \"rozmiar\". Parametr \"rozmiar\" określi rozmiar kwadratu.
Stworzyliśmy już nowe polecenie o nazwie kwadrat, które oczekuje parametru. Sprawdźmy, czy ono działa. Możesz napisać polecenie square 60 lub polecenie square 80 i tak dalej.
Napisz polecenie kwadrat 100
Kiedy polecenie wywołuje samo siebie, proces ten nosi nazwę 'rekursji'. Podczas korzystania z rekursji musimy mieć warunek zatrzymania (nie chcemy mieć nieskończonej pętli) i wywołania polecenia z nowymi parametrami. Brzmi skomplikowanie? Nie martw się, przejdziemy to krok po kroku. Nauczmy żółwia za pomocą polecenia 'kwadrat' za pomocą rekursji.
Naucz żółwia: \r\n\r\n
oto kwadrat :rozmiar jeśli :rozmiar > 90 [stop] powtórz 4 [np :rozmiar pw 90] kwadrat :rozmiar + 20 już
Zobaczmy, jak to działa, gdy używamy polecenia square 40 . Na początku wywołujemy polecenie square 40. Oznacza to, że parametr :rozmiar w poleceniu kwadrat ma wartość 40. Następnie używamy warunku jeśli. Co właściwie robimy, to pytamy żółwia: czy wartość :rozmiar jest większa niż 90 (:rozmiar>90)? Jeśli tak, zatrzymaj program. Jeśli tak nie jest, postępuj zgodnie z tymi instrukcjami - Narysuj kwadrat z parametrem :rozmiar. Wywołaj kwadrat z :rozmiar=:rozmiar+20.
Teraz parametr :rozmiar wynosi 60. Wciąż jest mniejszy niż 90, więc narysujemy kwadrat o wielkości 60 i wywołamy kwadrat :rozmiar=:rozmiar+20.
Teraz parametr :size ma wartość 80, czyli nadal mniej niż 90, więc żółw narysuje kwadrat o rozmiarze 80 i wywoła kwadrat z :rozmiar=:rozmiar+20. Teraz :rozmiar to 100 > 90 więc zatrzymamy program.
Wpisz polecenie kwadrat 40
Stworzmy polecenie spirala, aby żółw nauczył się jej. Spirala otrzyma 1 parametr o nazwie :rozmiar . Warunki zatrzymania będą następujące, gdy :rozmiar > 30 . Przy każdym wywołaniu przejdziemy do przodu zgodnie z parametrem wielkości, np :rozmiar , a następnie skręcimy w prawo 15, pw 15 . Ostatnią instrukcją będzie wywołanie spirali z :rozmiar *1.02
Naucz żółwia, co to jest spirala