Wstęp do Informatyki

Podobne dokumenty
Podstawy Informatyki

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych.

FRAKTALE. nie tworzą się z przypadku. Są tworzone naturalnie przez otaczającą nas przyrodę, bądź za pomocą

FRAKTALE I SAMOPODOBIEŃSTWO

Ciągi liczbowe. - oznacza, że a(1) = a 1, a(2) = a 2, a(n) = a n a 1, a 2, a 3, a 4,... a n a(n) a n

Rekurencja. Przygotowała: Agnieszka Reiter

Wstęp do Informatyki

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

Fraktale. i Rachunek Prawdopodobieństwa

Algorytmy i Struktury Danych.

Ciągi i rekurencja, komputer dla matematyka. warsztaty towarzyszące konferencji Informatyka realnie prowadzą: Hanna Basaj Jan Aleksander Wierzbicki

Modele i symulacje - Scratch i Excel

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

O rekurencji i nie tylko

Fraktale deterministyczne i stochastyczne. Katarzyna Weron Katedra Fizyki Teoretycznej

Rekurencja. Przykład. Rozważmy ciąg

Algorytmy. wer Wojciech Myszka 30 listopada 2008

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Metody algortmiczne (Algorytmy Część IV)

Krzywa uniwersalna Sierpińskiego

samopodobnym nieskończenie subtelny

Obrazy rekurencyjne. Zastosowanie rekurencji w algorytmice. AUTOR: Martin Śniegoń

Zbiór Cantora. Diabelskie schody.

Ciąg Fibonacciego jako szczególny przykład ciągu określonego rekurencyjnie. Przykłady rekurencji w informatyce

ALGORYTMY I STRUKTURY DANYCH

Fraktale wokół nas. Leszek Rudak Uniwersytet Warszawski. informatyka +

Wstęp do programowania

Jezyki i metody programowania

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Technologie Informatyczne Wykład VII

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Fraktale w matematyce

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Sierpiński Carpet Project. W ZSTiL Zespół Szkół Technicznych i Licealnych

Technologie informacyjne Wykład VII-IX

Rekurencja. Matematyka dyskretna

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Metody numeryczne w przykładach

Złota liczba. Zajęcia matematyczno przyrodnicze w Szkole Podstawowej w Antolce

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Rekursja 1. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytmy i Struktury Danych.

Plan prezentacji. Cechy charakterystyczne fraktali Zastosowanie fraktali Wymiar fraktalny D. Iteracyjny system funkcji (IFS)

Wymagania edukacyjne niezbędne do otrzymania poszczególnych śródrocznych i rocznych ocen klasyfikacyjnych z matematyki dla klasy VIII

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

PLANIMETRIA CZYLI GEOMETRIA PŁASZCZYZNY CZ. 1

KRZYŻÓWKA Może być np. równoboczny lub rozwartokątny. Jego pole to a b HASŁO:

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Wprowadzenie do algorytmiki

Rekurencja (rekursja)

Wstęp do Informatyki

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Zadania do samodzielnego rozwiązania

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik

Matematyka z kluczem. Układ treści w klasach 4 8 szkoły podstawowej. KLASA 4 (126 h) część 1 (59 h) część 2 (67 h)

Obliczenia inspirowane Naturą

7. CIĄGI. WYKŁAD 5. Przykłady :

Matematyka dyskretna. Andrzej Łachwa, UJ, A/15

Wstęp do informatyki

Geometria. Rodzaje i własności figur geometrycznych:

Weronika Łabaj. Geometria Bolyaia-Łobaczewskiego

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY MATEMATYKA KLASA 8 DZIAŁ 1. LICZBY I DZIAŁANIA

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE VIII

1. Rekurencje. Grzegorz Kosiorowski. Uniwersytet Ekonomiczny w Krakowie. zima 2016/2017

Pracę wykonali: -Bryjak Mateusz -Chudziak Paweł -Palacz Angelika -Skorwider Dariusz

Algorytmy i Struktury Danych

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

WYMAGANIA EDUKACYJNE

2.8. Algorytmy, schematy, programy

Programowanie w Baltie klasa VII

5. Rekurencja. Przykłady

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

V Konkurs Matematyczny Politechniki Białostockiej

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI W KLASIE V

Algorytm. a programowanie -

Wymagania edukacyjne z matematyki

Wykład 7. Informatyka Stosowana. 21 listopada Informatyka Stosowana Wykład 7 21 listopada / 27

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

PRÓBNY EGZAMIN MATURALNY

Algorytmy i Struktury Danych.

PRÓBNY EGZAMIN MATURALNY

PYTANIA TEORETYCZNE Z MATEMATYKI

Podręcznik. Przykład 1: Wyborcy

Jednoznaczność rozkładu na czynniki pierwsze I

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń

MATURA PRÓBNA - odpowiedzi

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Piotr Chrząstowski-Wachtel Uniwersytet Warszawski. Al Chwarizmi i trzy algorytmy Euklidesa

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Wymagania edukacyjne z matematyki dla klasy III a,b liceum (poziom podstawowy) rok szkolny 2018/2019

SZKOŁA PODSTAWOWA NR 1 IM. ŚW. JANA KANTEGO W ŻOŁYNI. Wymagania na poszczególne oceny klasa VIII Matematyka z kluczem

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH

MATEMATYKA DLA CIEKAWSKICH. Dowodzenie twierdzeń przy pomocy kartki. Część I

Transkrypt:

Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 1

Rekurencja Rekurencja albo rekursja (ang. recursion, z łac. recurrere, przybiec z powrotem) to w matematyce, i informatyce (np. programowaniu) odwoływanie się np. definicji lub funkcji czy procedury do samej siebie. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 2 / 1

Rekurencja Rekurencja albo rekursja (ang. recursion, z łac. recurrere, przybiec z powrotem) to w matematyce, i informatyce (np. programowaniu) odwoływanie się np. definicji lub funkcji czy procedury do samej siebie. Rekurencyjny - mat. dajacy się wyrazić za pomoca wielkości uprzednio znanych; wzór rekurencyjny - wzór pozwalajacy obliczyć wyrazy ciagu na podstawie jednego lub kilku wyrazów poprzedzajacych. <ang. recurrent, fr. recurrent, z łac. recurrens powracajacy >. [Słownik Wyrazów Obcych, PWN, 1996] Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 2 / 1

Rekurencja Rekurencja polega na rozwiazywaniu problemu w oparciu o rozwiazania tego samego problemu dla danych o mniejszych rozmiarach. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 3 / 1

Rekurencja Rekurencja polega na rozwiazywaniu problemu w oparciu o rozwiazania tego samego problemu dla danych o mniejszych rozmiarach. W informatyce przez rekurencje rozumiemy sposób rozwiazania problemu z zastosowaniem algorytmu rekurencyjnego, czyli algorytmu który w czasie wykonywania odwołuje się do siebie samego. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 3 / 1

Rekurencja Rekurencja polega na rozwiazywaniu problemu w oparciu o rozwiazania tego samego problemu dla danych o mniejszych rozmiarach. W informatyce przez rekurencje rozumiemy sposób rozwiazania problemu z zastosowaniem algorytmu rekurencyjnego, czyli algorytmu który w czasie wykonywania odwołuje się do siebie samego. Rekurencyjny opis obliczeń jest na ogół bardziej zwarty niż opis tych samych obliczeń bez użycia rekurencji. Taki opis jest stosowany np. przy opisie fraktali. Zwartości opisu rekurencyjnego nie zawsze odpowiada jednak efektywność komputerowych realizacji algorytmów. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 3 / 1

Czym jest fraktal? Fraktalem jest wszystko... Benoit Mandelbrot Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 4 / 1

Czym jest fraktal? Fraktalem jest wszystko... Benoit Mandelbrot Fraktal jest figura geometryczna o złożonej strukturze, nie będaca krzywa, powierzchnia ani bryła w rozumieniu klasycznej matematyki; charakteryzuje ja ułamkowy wymiar (stad nazwa fraktal -ang. fraction ułamek, łac. fractus złamany). Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 4 / 1

Czym jest fraktal? Fraktalem jest wszystko... Benoit Mandelbrot Fraktal jest figura geometryczna o złożonej strukturze, nie będaca krzywa, powierzchnia ani bryła w rozumieniu klasycznej matematyki; charakteryzuje ja ułamkowy wymiar (stad nazwa fraktal -ang. fraction ułamek, łac. fractus złamany). Fraktale sa bardzo skomplikowane, toteż dopiero komputery umożliwiły ich głębsze poznanie. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 4 / 1

Czym jest fraktal? Fraktalem jest wszystko... Benoit Mandelbrot Fraktal jest figura geometryczna o złożonej strukturze, nie będaca krzywa, powierzchnia ani bryła w rozumieniu klasycznej matematyki; charakteryzuje ja ułamkowy wymiar (stad nazwa fraktal -ang. fraction ułamek, łac. fractus złamany). Fraktale sa bardzo skomplikowane, toteż dopiero komputery umożliwiły ich głębsze poznanie. Wielu badaczy twierdzi, że geometria fraktali jest geometria przyrody. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 4 / 1

Czym jest fraktal? Fraktalem jest wszystko... Benoit Mandelbrot Fraktal jest figura geometryczna o złożonej strukturze, nie będaca krzywa, powierzchnia ani bryła w rozumieniu klasycznej matematyki; charakteryzuje ja ułamkowy wymiar (stad nazwa fraktal -ang. fraction ułamek, łac. fractus złamany). Fraktale sa bardzo skomplikowane, toteż dopiero komputery umożliwiły ich głębsze poznanie. Wielu badaczy twierdzi, że geometria fraktali jest geometria przyrody. Fraktale dały poczatek nowej geometrii zwanej geometria fraktalna, która pozwala modelować wiele obiektów i zjawisk występujacych w przyrodzie i nie tylko... Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 4 / 1

Fraktale Najstarsze fraktale wymyślili matematycy na poczatku XX-wieku, w wyniku zmagań z definicja wymiaru i krzywej. Najwybitniejszym twórca fraktali jest amerykański matematyk i informatyk polskiego pochodzenia - Benoit Mandelbrot. Na międzynarodowym kongresie matematyków w Warszawie w roku 1983 stwierdził, że jest jeszcze za wcześnie na formułowanie ścisłej definicji fraktala ponieważ nie znamy dostatecznie głęboko istoty tego pojęcia. Źródło: http://en. wikipedia.org/wiki/ Benoit_Mandelbrot Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 5 / 1

Fraktale - przypadkowe odkrycie Nieświadome odkrycie fraktali wiaże się z badaniem długości brzegu wyspy Wielkiej Brytanii. Długość była tym większa, im bardziej dokładna mapę rozważano. Nie zauważono, aby wzrost miał być ograniczony przez jakaś liczbę. Okazało się, że brzeg wyspy jest nieskończenie bogaty w szczegóły, co sugerowałoby jego nieskończona długość. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 6 / 1

Fraktale - przypadkowe odkrycie Nieświadome odkrycie fraktali wiaże się z badaniem długości brzegu wyspy Wielkiej Brytanii. Długość była tym większa, im bardziej dokładna mapę rozważano. Nie zauważono, aby wzrost miał być ograniczony przez jakaś liczbę. Okazało się, że brzeg wyspy jest nieskończenie bogaty w szczegóły, co sugerowałoby jego nieskończona długość. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 6 / 1

Cechy fraktali Fraktale maja cechę samopodobieństwa. Nie sa określone wzorem matematycznym, tylko zależnościa rekurencyjna. Sa obiektami których wymiar nie jest liczba całkowita. Każdy fraktal można w nieskończoność przybliżać. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 7 / 1

Cechy fraktali Fraktale maja cechę samopodobieństwa. Nie sa określone wzorem matematycznym, tylko zależnościa rekurencyjna. Sa obiektami których wymiar nie jest liczba całkowita. Każdy fraktal można w nieskończoność przybliżać. Kalafior Brokuł Drzewo Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 7 / 1

Fraktale - Zbiór Cantora Pierwsze fraktale powstały na przełomie XIX i XX wieku. Ich twórcami byli matematycy: Georg Cantor, David Hilbert, Helge von Koch oraz Wacław Sierpiński. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 8 / 1

Fraktale - Zbiór Cantora Pierwsze fraktale powstały na przełomie XIX i XX wieku. Ich twórcami byli matematycy: Georg Cantor, David Hilbert, Helge von Koch oraz Wacław Sierpiński. W roku 1883 Georg Cantor zaproponował prosta konstrukcję, w wyniku której otrzymuje się zbiór nazwany jego imieniem. Konstrukacja: Odcinek [0, 1] dzielimy na trzy równe części i usuwamy środkowa. Z pozostałymi dwoma odcinkami postępujemy analogicznie. W konsekwencji takiego postępowania w granicy nieskończonej ilości kroków powstaje zbiór punktów Cantora. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 8 / 1

Fraktale - Zbiór Cantora Pierwsze fraktale powstały na przełomie XIX i XX wieku. Ich twórcami byli matematycy: Georg Cantor, David Hilbert, Helge von Koch oraz Wacław Sierpiński. W roku 1883 Georg Cantor zaproponował prosta konstrukcję, w wyniku której otrzymuje się zbiór nazwany jego imieniem. Konstrukacja: Odcinek [0, 1] dzielimy na trzy równe części i usuwamy środkowa. Z pozostałymi dwoma odcinkami postępujemy analogicznie. W konsekwencji takiego postępowania w granicy nieskończonej ilości kroków powstaje zbiór punktów Cantora. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 8 / 1

Fraktale - Krzywa Kocha W 1904 roku szwedzki matematyk Helge von Koch zaproponował konstrukcję nazywana potocznie płatkiem śniegu. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 9 / 1

Fraktale - Krzywa Kocha 1 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 10 / 1

Fraktale - Krzywa Kocha 1 2 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 10 / 1

Fraktale - Krzywa Kocha 3 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 11 / 1

Fraktale - Krzywa Kocha 3 4 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 11 / 1

Fraktale - Krzywa Kocha 0) 1) 2) 3) 4) Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 12 / 1

Fraktale - Wacław Sierpiński W 1916 roku Wacław Sierpiński (14.03.1882-21.10.1969) rozszerzył zbiór Cantora na dwa wymiary. Kwadrat jednostkowy dzielimy na dziewięć i wyrzucamy środkowy. Postępujemy tak z każdym nowo powstałym kwadratem. Powstały fraktal nazywany dywanem Sierpińskiego. Analogicznie można postapić z trójkatem, którego boki dzielimy na dwie części i powstałe punkty łaczymy co doprowadzi do powstania kolejnego trójkata, który usuwamy. Z pozostałymi trzema postępujemy podobnie, itd. Źródło:http: //www.gap-system. org/~history/ Biographies/ Sierpinski.html Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 13 / 1

Fraktale - Trójkat Sierpińskiego Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 14 / 1

Fraktale - Trójkat Sierpińskiego Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 15 / 1

Fraktale - Dywan Sierpińskiego Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 16 / 1

Fraktale - Krzywa Hilberta Krzywa Hilberta - to przykład krzywej, która wypełnia całkowicie płaszczyznę, tzn. przechodzi przez wszystkie punkty płaszczyzny. Konstrukcja tej krzywej została podana przez Davida Hilberta w 1891 jako wariant krzywej Peano. n = 1 n = 2 n = 3 n = 4 n = 5 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 17 / 1

Kostka Mengera, gabka Mengera Kostka Mengera, gabka Mengera to bryła fraktalna, trójwymiarowy odpowiednik zbioru Cantora i dywanu Sierpińskiego. Konstrukcja kostki została podana przez austriackiego matematyka Karla Mengera w roku 1927: Dany jest sześcian. Tniemy go na 27 sześcianów równej wielkości płaszczyznami równoległymi do ścian. Usuwamy wszystkie sześciany przyległe do środków ścian pierwotnego sześcianu oraz sześcian znajdujacy się w jego środku. powtarzamy powyższe kroki dla każdego z pozostałych sześcianów, kontynuujac iteracje w niekończoność. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 18 / 1

Kostka Mengera, gabka Mengera Źródło: http://en.wikipedia.org/wiki/menger_sponge Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 19 / 1

Piramida Sierpińskiego Piramida Sierpińskiego, Gabka Sierpińskiego, tetrix - zbiór fraktalny, trójwymiarowy odpowiednik trójkata Sierpińskiego Piramida Sierpińskiego powstaje z czworościanu foremnego przez wykonanie następujacego algorytmu: Weź ostrosłup o boku długości x. Utwórz 4 ostrosłupy o boku długości 1/2x i umieść je w przestrzeni tak, by zawierały się w dużym ostrosłupie oraz każdy miał wspólny jeden wierzchołek z dużym ostrosłupem. Usuń duży ostrosłup. Do każdego z 4 małych ostrosłupów zastosuj ten algorytm. Po nieskończonej liczbie powtórzeń opisanych operacji otrzymujemy piramidę Sierpińskiego. Źródło: http://pl.wikipedia.org/wiki/piramida_sierpinskiego Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 20 / 1

Piramida Sierpińskiego Źródło: http: //www.matematyka.wroc.pl/book/piramida-sierpinskiego Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 21 / 1

Inne fraktale Zbiory Julii: F(0) = p; F(n + 1) = F(n) 2 + c; gdzie: p - punkt płaszczyzny c - liczba zespolona będaca parametrem zbioru. Dla różnych c otrzymujemy różne zbiory. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 22 / 1

Inne fraktale Zbiory Mandelbrota: F(0) = (0, 0); F(n + 1) = F(n) 2 + c; gdzie: c - liczba zespolona będaca parametrem zbioru. Dla różnych c otrzymujemy różne zbiory. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 23 / 1

Rekurencja - powrót do formalizmu Aby algorytm rekurencyjny mógł się zatrzymać, jego kolejne odwołania do siebie samego musza zależeć od pewnego warunku, który zmienia się z każdym kolejnym odwołaniem. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 24 / 1

Rekurencja - powrót do formalizmu Aby algorytm rekurencyjny mógł się zatrzymać, jego kolejne odwołania do siebie samego musza zależeć od pewnego warunku, który zmienia się z każdym kolejnym odwołaniem. Niepożadana cecha definicji rekurencyjnych: aby wyznaczyć n-ta wartość trzeba najpierw wyznaczyć wszystkie wcześniejsze wartości. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 24 / 1

Rekurencja - powrót do formalizmu Aby algorytm rekurencyjny mógł się zatrzymać, jego kolejne odwołania do siebie samego musza zależeć od pewnego warunku, który zmienia się z każdym kolejnym odwołaniem. Niepożadana cecha definicji rekurencyjnych: aby wyznaczyć n-ta wartość trzeba najpierw wyznaczyć wszystkie wcześniejsze wartości. Dzięki algorytmom rekurencyjnym, rozwiazania wielu trudnych problemów sa bardzo proste. Podstawowe błedy: złe okreslenie warunku zakonczenia programu, niewłasciwa (nieefektywna) dekompozycja problemu. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 24 / 1

Rekurencja - definicja Definicja rekurencyjna składa się z dwóch części. W pierwszej, zwanej podstawowa lub warunkiem poczatkowym sa wyliczone elementy podstawowe, stanowiace części składowe wszystkich pozostałych elementów zbioru. W drugiej części, zwanej krokiem indukcyjnym, sa podane reguły umożliwiajace konstruowanie nowych obiektów z elementów podstawowych lub obiektów zbudowanych wcześniej. Reguły te można stosować wielokrotnie, tworzac nowe obiekty. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 25 / 1

Funkcja silnia n! = 1 2... n - wersja iteracyjna begin write("podaj liczbe n = "); read (n); i:= 1; silnia := 1; while (i <= n) do begin silnia := silnia * i; i := i+1; end; write(silnia); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 26 / 1

Funkcja silnia n! = 1 2... n - wersja iteracyjna silnia (n) /** procedura **/ begin if (n=0) then return 1; i := 1; s := 1; while (i <= n) do begin s := s * i; end; return s; end; i := i+1; begin /** program glowny **/ write("podaj liczbe n = "); read (n); m:=silnia (n); write(n); write ("! = "); write (m); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 27 / 1

Rekurencja - funkcja silnia silnia(n) = { 1 dla n = 0 n silnia(n 1) dla n > 0 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 28 / 1

Rekurencja - funkcja silnia silnia(n) = { 1 dla n = 0 n silnia(n 1) dla n > 0 Jak to wyglada w praktyce dla n = 3 (silnia(3) =?) 1 n = 0? nie, zatem oblicz 3 silnia(2) 2 n = 0? nie, zatem oblicz 2 silnia(1) 3 n = 0? nie, zatem oblicz 1 silnia(0) 4 n = 0? tak, zwróć 1. 5 zwróć 1 1 6 zwróć 1 1 2 7 zwróć 1 1 2 3 8 Zatem silnia(3) = 6! Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 28 / 1

Funkcja silnia - wersja rekurencyjna /** procedura **/ silnia (n) begin if (n=0) then return 1; else return n*silnia(n-1); end. /** program glowny **/ begin write("podaj liczbe n = "); read (n); m:=silnia (n); write(n); write ("! = "); write (m); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 29 / 1

Rekurencja - obliczanie a n a n = pow(a, n) = { 1 dla n = 0 a pow(a, n 1) dla n > 0 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 30 / 1

Rekurencja - obliczanie a n a n = pow(a, n) = { 1 dla n = 0 a pow(a, n 1) dla n > 0 Jak to wyglada w praktyce dla a = 2 i n = 3 (pow(2, 3) =?) 1 n = 0? nie, zatem oblicz 2 pow(2, 2) 2 n = 0? nie, zatem oblicz 2 pow(2, 1) 3 n = 0? nie, zatem oblicz 2 pow(2, 0) 4 n = 0? tak, zwróć 1. 5 zwróć 1 2 6 zwróć 1 2 2 7 zwróć 1 2 2 2 8 Zatem pow(2, 3) = 8! Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 30 / 1

Funkcja pow - wersja rekurencyjna pow (a,n) /** procedura **/ begin if (n=0) then return 1; else return a*pow(a,n-1); end. begin /** program glowny **/ write("podaj liczby a i n = "); read (a); read (n); m := pow(a,n); write(a); write ("^"); writw(n); write("="); end. write Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 31 / 1

Rekurencja - algorytm Euklidesa Dane: a, b - dwie liczby naturalne Dane wyjściowe: liczba naturalna będaca największym wspólnym dzielnikiem liczb a i b. Rozwiazanie rekurencyjne: { a dla b = 0 NWD(a, b) = NWD(b, a mod b) dla b > 0 Euklides z Aleksandrii ok. 365-300 p.n.e. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 32 / 1

Rekurencja - algorytm Euklidesa NWD(a, b) = { a dla b = 0 NWD(b, a mod b) dla b > 0 Przykład: NWD(1071, 1029) = NWD(1029, 1071mod1029 = 42) = NWD(1029, 42) = NWD(42, 1029mod42 = 21) = NWD(42, 21) = NWD(21, 42mod21 = 0). Stad: NWD(1071, 1029) = 21. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 33 / 1

Ciag Fibonacciego Liczby naturalne tworzace ciag o takiej własności, że kolejny wyraz (z wyjatkiem dwóch pierwszych) jest suma dwóch poprzednich nazywa się liczbami Fibonacciego. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 34 / 1

Ciag Fibonacciego Liczby naturalne tworzace ciag o takiej własności, że kolejny wyraz (z wyjatkiem dwóch pierwszych) jest suma dwóch poprzednich nazywa się liczbami Fibonacciego. Poczatkowe wartości tego ciagu to: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,... Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 34 / 1

Ciag Fibonacciego Liczby naturalne tworzace ciag o takiej własności, że kolejny wyraz (z wyjatkiem dwóch pierwszych) jest suma dwóch poprzednich nazywa się liczbami Fibonacciego. Poczatkowe wartości tego ciagu to: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,... Ciag Fibonacciego zawdzięcza swoja nazwę włoskiemu matematykowi z Pizy, Leonardowi, który pod nazwiskiem Fibonacci wydał w 1202 roku słynna księgę Liber Abaci zawierajac a opis tego ciagu jako rozwiazanie zadania o rozmnażaniu się królików. Ojciec Leonarda nosił przydomek Bonacci, stad syn został Fibonaccim (filius Bonacci - syn dobrotliwego). Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 34 / 1

Ciag Fibonacciego - rozmnażanie królików Zadanie Fibonacciego: Ile par królików może spłodzić jedna para w ciagu roku, jeśli: każda para rodzi nowa parę w ciagu miesiaca, para staje się płodna po miesiacu, króliki nie umieraja. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 35 / 1

Ciag Fibonacciego - Złoty podział W wyniku podzielenia każdej z liczb ciagu przez jej poprzednik otrzymuje się iloraz oscylujacy wokół 1, 618 - liczby złotego podziału. W miarę zwiększania się liczb zmniejszaja się odchylenia od tej wartości. Dokładna wartość granicy jest złota liczba: 5 + 1 Φ = = 1, 6180339887498948482... 2 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 36 / 1

Ciag Fibonacciego - Złoty podział W wyniku podzielenia każdej z liczb ciagu przez jej poprzednik otrzymuje się iloraz oscylujacy wokół 1, 618 - liczby złotego podziału. W miarę zwiększania się liczb zmniejszaja się odchylenia od tej wartości. Dokładna wartość granicy jest złota liczba: 5 + 1 Φ = = 1, 6180339887498948482... 2... 233/144 = 1.61805555556 144/89 = 1.61797752809 89/55 = 1.61818181818 55/34 = 1.61764705882 34/21 = 1.61904761905 21/13 = 1.61538461538... Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 36 / 1

Ciag Fibonacciego - Złoty podział W wyniku podzielenia każdej z liczb ciagu przez jej następnik otrzymuje się iloraz oscylujacy wokół 0, 618 - liczby złotego podziału. W miarę zwiększania się liczb zmniejszaja się odchylenia od tej wartości. Dokładna wartość granicy jest złota liczba: 5 1 Φ = = 0, 618033989... 2 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 37 / 1

Ciag Fibonacciego - Złoty podział W wyniku podzielenia każdej z liczb ciagu przez jej następnik otrzymuje się iloraz oscylujacy wokół 0, 618 - liczby złotego podziału. W miarę zwiększania się liczb zmniejszaja się odchylenia od tej wartości. Dokładna wartość granicy jest złota liczba: 5 1 Φ = = 0, 618033989... 2... 144/233 = 0.618025751073 89/144 = 0.618055555556 55/89 = 0.61797752809 34/55 = 0.618181818182 21/34 = 0.617647058824 13/21 = 0.619047619048... Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 37 / 1

Ciag Fibonacciego - Złoty podział Złoty podział (łac. sectio aurea), podział harmoniczny, złota proporcja, boska proporcja (łac. divina proportio) - podział odcinka na dwie części tak, by stosunek długości dłuższej z nich do krótszej był taki sam, jak całego odcinka do części dłuższej. Φ = a + b a = a b Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 38 / 1

Ciag Fibonacciego - Złoty podział Złoty podział (łac. sectio aurea), podział harmoniczny, złota proporcja, boska proporcja (łac. divina proportio) - podział odcinka na dwie części tak, by stosunek długości dłuższej z nich do krótszej był taki sam, jak całego odcinka do części dłuższej. Φ = a + b a = a b Złotymi proporcjami wyznaczonymi na podstawie ciagu Fibonacciego posługiwał się w swoim malarstwie Leonardo da Vinci i Botticelli. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 38 / 1

Ciag Fibonacciego - gdzie go można znaleźć? Ciag Fibonacciego można odnaleźć w wielu aspektach przyrody, ciag taki opisuje np. liczbę pędów rośliny jednostajnie przyrastajacej w latach. W słoneczniku możemy zaobserwować dwa układy linii spiralnych, wychodzacych ze środka. Liczba linii rozwijajacych się zgodnie z ruchem wskazówek zegara wynosi 55 i tylko 34 skręconych w przeciwna stronę. Takie same spirale można zaobserwować na wielu innych roślinach (np. kalafior, ananas). Liczby spiral występujacych w tych roślinach sa kolejnymi liczbami Fibonacciego. Źródło: http://www.math.edu.pl/liczby-fibonacciego Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 39 / 1

Ciag Fibonacciego - definicja rekurencyjna Ciag Fibonacciego definiujemy rekurencyjnie w sposób następujacy: F 0 = 0 F 1 = 1 F n = F n 1 + F n 2, dla n 2 F 2 F 1 F 0 F 4 F 2 F 3 F 1 F 5 F 2 F 1 F 0 F 3 F 1 F 1 F 0 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 40 / 1

Ciag Fibonacciego - algorytm rekurencyjny Ciag Fibonacciego definiujemy rekurencyjnie w sposób następujacy: F 0 = 0 F 1 = 1 F n = F n 1 + F n 2, dla n 2 Require: Liczba n {F 0,..., F n 1, F n } Algorytm: FIB (n) 1: if n < 2 then 2: return n; 3: else 4: return FIB(n 2) + FIB(n 1); 5: end if Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 41 / 1

Ciag Fibonacciego - spirala 0 if n = 0 f (n) = 1 if n = 1 f (n 1) + f (n 2) if n 2 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 42 / 1

Efektywność rekurencyjnego wykonania funkcji Fibonacciego n Liczba dodawań Liczba wywołań 6 12 25 10 88 177 15 986 1 973 20 10 945 21 891 25 121 392 242 785 30 1 346 268 2 692 537 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 43 / 1

Ciag Fibonacciego - algorytm iteracyjny Require: Liczba n {F 0,..., F n 1, F n } Algorytm: FIB (n) 1: if n < 2 then 2: return n; 3: else 4: f 0 := 0; 5: f 1 := 1; 6: for i := 2 n do 7: m := f 0 + f 1; 8: f 0 := f 1; 9: f 1 := m; 10: end for 11: end if 12: return m; Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 44 / 1

Efektywność iteracyjnego wykonania funkcji Fibonacciego n Liczba przypisań Liczba wywołań n algorytm iteracyjny algorytm rekurencyjny 6 15 25 10 27 177 15 42 1 973 20 57 21 891 25 72 242 785 30 87 2 692 537 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 45 / 1

Wieże Hanoi Zagadka: Dane sa trzy pale: A, B i C. Na jeden z nich, np. na A nałożono krażki o różnych średnicach, tak że krażek mniejszy nie leży pod wiekszym. Pale B i C sa puste. Należy przenieść wszystkie krażki z pala A na C. Można używac B jako pomocnicze miejsce przechowywania. Nie można kłaść krażków wiekszych na mniejsze. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 46 / 1

Wieże Hanoi 1 Krażek 1 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 47 / 1

Wieże Hanoi 1 Krażek 1 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 48 / 1

Wieże Hanoi 1 Krażek OK 1 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 49 / 1

Wieże Hanoi 2 Krażki 1 2 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 50 / 1

Wieże Hanoi 2 Krażki 2 1 Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 51 / 1

Wieże Hanoi 2 Krażki 1 2 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 52 / 1

Wieże Hanoi 2 Krażki 1 2 Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 53 / 1

Wieże Hanoi 2 Krażki OK 1 2 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 54 / 1

Wieże Hanoi 3 Krażki 1 2 3 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 55 / 1

Wieże Hanoi 3 Krażki 2 3 1 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 56 / 1

Wieże Hanoi 3 Krażki 3 2 1 Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 57 / 1

Wieże Hanoi 3 Krażki 1 3 2 Dysk przeniesiony z palika 3 na palik 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 58 / 1

Wieże Hanoi 3 Krażki 1 2 3 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 59 / 1

Wieże Hanoi 3 Krażki 1 2 3 Dysk przeniesiony z palika 2 na palik 1. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 60 / 1

Wieże Hanoi 3 Krażki 2 1 3 Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 61 / 1

Wieże Hanoi 3 Krażki 1 2 3 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 62 / 1

Wieże Hanoi 3 Krażki OK 1 2 3 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 63 / 1

Wieże Hanoi 4 Krażki 1 2 3 4 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 64 / 1

Wieże Hanoi 4 Krażki 2 3 4 1 Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 65 / 1

Wieże Hanoi 4 Krażki 3 4 1 2 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 66 / 1

Wieże Hanoi 4 Krażki 3 4 1 2 Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 67 / 1

Wieże Hanoi 4 Krażki 1 4 3 2 Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 68 / 1

Wieże Hanoi 4 Krażki 1 4 3 2 Dysk przeniesiony z palika 3 na palik 1. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 69 / 1

Wieże Hanoi 4 Krażki 1 4 2 3 Dysk przeniesiony z palika 3 na palik 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 70 / 1

Wieże Hanoi 4 Krażki 1 2 4 3 Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 71 / 1

Wieże Hanoi 4 Krażki 1 2 3 4 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 72 / 1

Wieże Hanoi 4 Krażki 2 3 1 4 Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 73 / 1

Wieże Hanoi 4 Krażki 1 2 3 4 Dysk przeniesiony z palika 2 na palik 1. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 74 / 1

Wieże Hanoi 4 Krażki 1 2 3 4 Dysk przeniesiony z palika 3 na palik 1. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 75 / 1

Wieże Hanoi 4 Krażki 1 2 3 4 Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 76 / 1

Wieże Hanoi 4 Krażki 3 2 1 4 Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 77 / 1

Wieże Hanoi 4 Krażki 2 3 1 4 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 78 / 1

Wieże Hanoi 4 Krażki 1 2 3 4 Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 79 / 1

Wieże Hanoi 4 Krażki OK 1 2 3 4 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 80 / 1

Wieże Hanoi 5 Krażków? 1 2 3 4 5 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 81 / 1

Wieże Hanoi Zagadka Wież Hanoi stała się znana w XIX wieku dzięki matematykowi Edouardowi Lucas, który zaproponował tę zagadkę dla 8 krażków. Do sprzedawanego zestawu była dołaczona - wymyślona przez Lucas - Tybetańska legenda, według której mnisi w światyni Brahmy rozwiazuj a tę łamigłówkę dla 64 złotych krażków. Legenda mówi, że gdy mnisi zakończa zadanie, to nastapi koniec świata. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 82 / 1

Wieże Hanoi Zagadka Wież Hanoi stała się znana w XIX wieku dzięki matematykowi Edouardowi Lucas, który zaproponował tę zagadkę dla 8 krażków. Do sprzedawanego zestawu była dołaczona - wymyślona przez Lucas - Tybetańska legenda, według której mnisi w światyni Brahmy rozwiazuj a tę łamigłówkę dla 64 złotych krażków. Legenda mówi, że gdy mnisi zakończa zadanie, to nastapi koniec świata. Zakładajac, że mnisi wykonuja 1 ruch na sekundę, ułożenie wieży zajmie 2 64 1 = 18446744073709551615 (blisko 18 i pół tryliona) sekund, czyli około 584542 miliardów lat. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 82 / 1

Wieże Hanoi Zagadka Wież Hanoi stała się znana w XIX wieku dzięki matematykowi Edouardowi Lucas, który zaproponował tę zagadkę dla 8 krażków. Do sprzedawanego zestawu była dołaczona - wymyślona przez Lucas - Tybetańska legenda, według której mnisi w światyni Brahmy rozwiazuj a tę łamigłówkę dla 64 złotych krażków. Legenda mówi, że gdy mnisi zakończa zadanie, to nastapi koniec świata. Zakładajac, że mnisi wykonuja 1 ruch na sekundę, ułożenie wieży zajmie 2 64 1 = 18446744073709551615 (blisko 18 i pół tryliona) sekund, czyli około 584542 miliardów lat. Dla porównania: Wszechświat ma około 13,7 mld lat. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 82 / 1

Wieże Hanoi - algorytm rekurencyjny Oznaczmy pale przez A, B, C Niech n oznacza liczbę krażków ponumerujmy krażki od najmniejszego u góry do największego u dołu W celu przeniesienia n krażków z A do C należy: przenieść n 1 krażków z A do B - wówczas n-ty dysk samotnie pozostaje w A przenieść n-ty (największy) krażek z A do C przenieść n 1 krażków z B do C Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 83 / 1

Przykład rekurencji bez końca StadDoWiecznosci(n) begin if (n=1) then return 1; else begin if ((n mod 2)=0) then // czy n jest parzyste? return StadDoWiecznosci(n-2)*n; else return StadDoWiecznosci(n-1)*n; endif; endif; end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 84 / 1