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

Podobne dokumenty
ALGORYTMY I STRUKTURY DANYCH

Technologie Informatyczne Wykład VII

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

Technologie informacyjne Wykład VII-IX

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

Algorytmy i struktury danych

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

Wstęp do Informatyki

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

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Metody algortmiczne (Algorytmy Część IV)

Algorytmy i Struktury Danych.

Algorytmy. wer Wojciech Myszka 30 listopada 2008

Wstęp do informatyki

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Podstawy Programowania C 02

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

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy

Informatyka A. Algorytmy

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

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Wstęp do Programowania potok funkcyjny

Algorytmy i struktury danych. Wykład 4

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

1 Wprowadzenie do algorytmiki

Podstawy programowania funkcjonalnego

Wstęp do Informatyki

Wstęp do programowania

Rekurencja (rekursja)

Silnia iteracyjnie n! = 1 * 2 * 3 *... * n widać, że to definicja w pętli. Silnia rekurencyjnie n! = n * (n-1)!

5. Rekurencja. Przykłady

Algorytmy w teorii liczb

Podstawy Informatyki

Teoretyczne podstawy informatyki

2.8. Algorytmy, schematy, programy

Wstęp do programowania

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

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

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

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

Podprogramy. Procedury

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

Laboratorium kryptograficzne dla licealistów 6

Rekurencja. Przygotowała: Agnieszka Reiter

Algorytm. a programowanie -

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

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

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

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

Poprawność semantyczna

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

Zaawansowane algorytmy i struktury danych

Programowanie Funkcyjne. Marcin Kubica Świder,

12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.

EGZAMIN MATURALNY Z INFORMATYKI

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Wstęp do programowania

Jak tworzymy algorytmy? Wersja: 3

PROSTE RACHUNKI WYKONYWANE ZA POMOCĄ KOMPUTERA

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

Analiza algorytmów zadania podstawowe

Algorytmy i język C++

Algebra. Mat.dyskretna v.1.3 egzamin mgr inf niestacj 1. a i b i, a b (wektory są prostopadłe) a, b = 0 i=1. m n. r c ij = a ik b kj = i-ty wiersz

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Scenariusz lekcji. Obliczanie NWD- algorytm Euklidesa.

Algorytmy i Struktury Danych.

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

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

Podstawy programowania. Podstawy C# Przykłady algorytmów

EGZAMIN MATURALNY Z INFORMATYKI

Składnia funkcji i Rekurencja w języku Haskell

Największy wspólny dzielnik dwóch liczb naturalnych ALGORYTM EUKLIDESA

Program telewizyjny emisji filmów w 4 stacjach telewizyjnych: Telewizja / stacja Film i godziny jego emisji Czas trwania emisji filmu

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

Kurs Pascala LO Biecz 2010/2011. Kurs Pascala oparty na zadaniach i problemach z lekcji Informatyki.

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu Tablice (wstęp) Rzut okiem na języki programowania

Wstęp do Informatyki

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Wybrane zagadnienia teorii liczb

EGZAMIN MATURALNY Z INFORMATYKI

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

while(wyrażenie) instrukcja

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Programowanie w VB Proste algorytmy sortowania

Wykład 5: Iteracja, indukcja i rekurencja Sortowanie

ZADANIE 1. Ważenie (14 pkt)

Podstawowe elementy programu. patrz: następne 2 slajdy. Podstawowe elementy programu. Komendy proste:

Analiza algorytmów zadania podstawowe

3. Podstawowe funkcje mamematyczne. ZAPOZNAĆ SIĘ!!!

Algorytmy komputerowe. dr inż. Jarosław Forenc

Algorytmy od problemu do wyniku

RÓŻNORODNE ALGORYTMY OBLICZEŃ I ICH KOMPUTEROWE REALIZACJE

ĆWICZENIE NR 1 WPROWADZENIE DO INFORMATYKI

Algorytmy i Struktury Danych, 2. ćwiczenia

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Wykład 5 Dopasowywanie lokalne

Największy wspólny dzielnik Algorytm Euklidesa (także rozszerzony) WZAiP1: Chińskie twierdzenie o resztach

Transkrypt:

Rekurencja Wykład: rekursja, funkcje rekurencyjne, wywołanie samej siebie, wyznaczanie poszczególnych liczb Fibonacciego, potęgowanie, algorytm Euklidesa

REKURENCJA Rekurencja (z łac. recurrere), zwana także rekursją (z ang. recursion) to termin oznaczający w programowaniu sytuację, kiedy funkcja w celu zwrócenia prawidłowego wyniku wywołuje samą siebie (a dokładnie tworzy swoje kopie aż do napotkania tzw. przypadku podstawowego, dla którego funkcja może wyznaczyć wynik).

FUNKCJA REKURENCYJNA function s(n:integer):integer; if (n>1) then s:=n*s(n-1); else s:=1; s(4)=4*s(3)

FUNKCJA REKURENCYJNA function s(n:integer):integer; if (n>1) then s:=n*s(n-1); else s:=1; s(4)=4*s(3) s(3)=3*s(2)

FUNKCJA REKURENCYJNA function s(n:integer):integer; if (n>1) then s:=n*s(n-1); else s:=1; s(4)=4*s(3) s(3)=3*s(2) s(2)=2*s(1)

FUNKCJA REKURENCYJNA function s(n:integer):integer; if (n>1) then s:=n*s(n-1); else s:=1; s(4)=4*s(3) s(3)=3*s(2) s(2)=2*s(1) s(1)=1 1

FUNKCJA REKURENCYJNA function s(n:integer):integer; if (n>1) then s:=n*s(n-1); else s:=1; s(4)=4*s(3) s(3)=3*s(2) s(2)=2*s(1) 2 s(1)=1 1

FUNKCJA REKURENCYJNA function s(n:integer):integer; if (n>1) then s:=n*s(n-1); else s:=1; s(4)=4*s(3) s(3)=3*s(2) s(2)=2*s(1) 6 2 s(1)=1 1

FUNKCJA REKURENCYJNA function s(n:integer):integer; if (n>1) then s:=n*s(n-1); else s:=1; s(4)=4*s(3) s(3)=3*s(2) s(2)=2*s(1) 24 6 2 s(1)=1 1

FUNKCJA WYZNACZAJĄCA N-TY WYRAZ CIĄGU FIBONACCIEGO function fib(n:integer):integer; if (n=1) or (n=2) then fib:=1 else if n>2 then fib:=fib(n-1)+fib(n-2); fib(3) fib(5) fib(4) fib(3) fib(2) fib(2) fib(1) fib(2) fib(1)

FUNKCJA WYZNACZAJĄCA N-TY WYRAZ CIĄGU FIBONACCIEGO function fib(n:integer):integer; if (n=1) or (n=2) then fib:=1 else if n>2 then fib:=fib(n-1)+fib(n-2); fib(3) fib(5) fib(4) fib(3) fib(2) fib(2) fib(1) 1 1 1 fib(2) fib(1) 1 1

FUNKCJA WYZNACZAJĄCA N-TY WYRAZ CIĄGU FIBONACCIEGO function fib(n:integer):integer; if (n=1) or (n=2) then fib:=1 else if n>2 then fib:=fib(n-1)+fib(n-2); fib(3) 2 fib(5) fib(4) fib(3) fib(2) fib(2) fib(1) 1 1 1 fib(2) fib(1) 1 1

FUNKCJA WYZNACZAJĄCA N-TY WYRAZ CIĄGU FIBONACCIEGO function fib(n:integer):integer; if (n=1) or (n=2) then fib:=1 else if n>2 then fib:=fib(n-1)+fib(n-2); fib(3) 2 fib(5) fib(4) fib(3) 3 2 fib(2) fib(2) fib(1) 1 1 1 fib(2) fib(1) 1 1

FUNKCJA WYZNACZAJĄCA N-TY WYRAZ CIĄGU FIBONACCIEGO function fib(n:integer):integer; if (n=1) or (n=2) then fib:=1 else if n>2 then fib:=fib(n-1)+fib(n-2); fib(3) 2 fib(5) 5 fib(4) fib(3) 3 2 fib(2) fib(2) fib(1) 1 1 1 fib(2) fib(1) 1 1

POTĘGOWANIE REKURENCYJNE function potega(p,w:integer):integer; if w=0 then potega:=1 else potega:=p*potega(p,w-1); potega(2,3)=2*potega(2,2) 3 Obliczmy 2 p podstawa potęgi w wykładnik potęgi

POTĘGOWANIE REKURENCYJNE function potega(p,w:integer):integer; if w=0 then potega:=1 else potega:=p*potega(p,w-1); potega(2,3)=2*potega(2,2) 3 potega(2,2)=2*potega(2,1) Obliczmy 2 p podstawa potęgi w wykładnik potęgi

POTĘGOWANIE REKURENCYJNE function potega(p,w:integer):integer; if w=0 then potega:=1 else potega:=p*potega(p,w-1); potega(2,3)=2*potega(2,2) 3 potega(2,2)=2*potega(2,1) Obliczmy 2 p podstawa potęgi w wykładnik potęgi potega(2,1)=2*potega(2,0)

POTĘGOWANIE REKURENCYJNE function potega(p,w:integer):integer; if w=0 then potega:=1 else potega:=p*potega(p,w-1); potega(2,3)=2*potega(2,2) 3 potega(2,2)=2*potega(2,1) Obliczmy 2 p podstawa potęgi w wykładnik potęgi potega(2,1)=2*potega(2,0) potega(2,0)=1 1

POTĘGOWANIE REKURENCYJNE function potega(p,w:integer):integer; if w=0 then potega:=1 else potega:=p*potega(p,w-1); potega(2,3)=2*potega(2,2) 3 potega(2,2)=2*potega(2,1) Obliczmy 2 p podstawa potęgi w wykładnik potęgi potega(2,1)=2*potega(2,0) 2 potega(2,0)=1 1

POTĘGOWANIE REKURENCYJNE function potega(p,w:integer):integer; if w=0 then potega:=1 else potega:=p*potega(p,w-1); potega(2,3)=2*potega(2,2) 3 potega(2,2)=2*potega(2,1) Obliczmy 2 4 p podstawa potęgi w wykładnik potęgi potega(2,1)=2*potega(2,0) 2 potega(2,0)=1 1

POTĘGOWANIE REKURENCYJNE function potega(p,w:integer):integer; if w=0 then potega:=1 else potega:=p*potega(p,w-1); potega(2,3)=2*potega(2,2) 8 3 potega(2,2)=2*potega(2,1) Obliczmy 2 4 p podstawa potęgi w wykładnik potęgi potega(2,1)=2*potega(2,0) 2 Wynik = 8 potega(2,0)=1 1

ALGORYTM EUKLIDESA Algorytm Euklidesa algorytm znajdowania największego wspólnego dzielnika (NWD) dwóch liczb naturalnych Algorytm iteracyjnie: function nwd(a,b:integer):integer; while (a<>b) do if (a>b) then a:=a-b else b:=b-a; nwd:=a;

ALGORYTM EUKLIDESA Algorytm rekurencyjnie: function NWD(a,b:integer):integer; if (b=0) then NWD:=a else NWD:=NWD(b,a mod b); End; Wyznaczmy NWD 25 i 10 NWD(25,10)=NWD(10,5)

ALGORYTM EUKLIDESA Algorytm rekurencyjnie: function NWD(a,b:integer):integer; if (b=0) then NWD:=a else NWD:=NWD(b,a mod b); End; Wyznaczmy NWD 25 i 10 NWD(25,10)=NWD(10,5) NWD(10,5)=NWD(5,0)

ALGORYTM EUKLIDESA Algorytm rekurencyjnie: function NWD(a,b:integer):integer; if (b=0) then NWD:=a else NWD:=NWD(b,a mod b); End; Wyznaczmy NWD 25 i 10 NWD(25,10)=NWD(10,5) NWD(10,5)=NWD(5,0) NWD(5,0)=5 5

ALGORYTM EUKLIDESA Algorytm rekurencyjnie: function NWD(a,b:integer):integer; if (b=0) then NWD:=a else NWD:=NWD(b,a mod b); End; Wyznaczmy NWD 25 i 10 NWD(25,10)=NWD(10,5) NWD(10,5)=NWD(5,0) 5 NWD(5,0)=5 5

ALGORYTM EUKLIDESA Algorytm rekurencyjnie: function NWD(a,b:integer):integer; if (b=0) then NWD:=a else NWD:=NWD(b,a mod b); End; Wyznaczmy NWD 25 i 10 NWD = 5 NWD(25,10)=NWD(10,5) 5 NWD(10,5)=NWD(5,0) 5 NWD(5,0)=5 5