Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Sortowanie przez scalanie
Schemat blokowy M START KONIEC
Język ANSI C Funkcje Wykład: Programowanie komputerów
Programowanie I Rekurencja.
Wprowadzenie do języka skryptowego PHP – cz. 2
Filip Andrzejewski Remigiusz Chiluta
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
Badania operacyjne. Wykład 2
Złożoność obliczeniowa
ALGORYTMY I STRUKTURY DANYCH
ZŁOŻONOŚĆ OBLICZENIOWA
Opracowała: Elżbieta Fedko
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
Kurs Pascala – spis treści
Tablice.
Materiały pomocnicze do wykładu
Instrukcje 1 Definicje wstępne Formalny opis akcji wykonywanej przez komputer nazywamy instrukcją ( statement), Każda instrukcja kończona jest średnikiem.
Dynamiczne struktury danych 1
Tablice jednowymiarowe 1
Typy danych – podstawy 1 W Adzie wszystkie dane muszą być określonego typu. Definicja Typ danych (data type) jest to zbiór wartości i operacji, które można.
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Analiza matematyczna - Ciągi liczbowe wykład I
Algorytmy i struktury danych
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
Wstęp do interpretacji algorytmów
Podprogramy.
ALGORYTMY.
Podstawy programowania
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Ciąg liczbowy Ciąg arytmetyczny Ciąg geometryczny
Podstawy informatyki 2013/2014
Rekurencja.
Podstawy programowania
Programowanie strukturalne i obiektowe
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Algorytmy i struktury danych
Programowanie w języku Matlab
Zastosowania ciągów.
ITERACJA - powtórzenie
Inicjalizacja i sprzątanie
Wnioskowanie w stylu Takagi - Sugeno.
Wykład 10 typ zbiorowy rekurencja.
Podstawy języka Instrukcje - wprowadzenie
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmika.
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Derekursywacja i optymalizacja kodu
Algorytmy- Wprowadzenie do programowania
opracowała: Anna Mikuć
Podstawowe struktury danych. Typy danych.
Rekurencja.
Algorytmy.
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 1
Programowanie I Rekurencja.
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Rekurencja - Haskell Bartosz Pawlak Sebastian Żółtowski Adam Stegenda Krystian Sobótka Tomasz Gołębiewski.
Efektywność algorytmów
Programowanie I Rekurencja.
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej siebie lub jej definicja odwołuje się do niej samej. Przykłady definicji rekurencyjnych stosowanych w matematyce Definicja liczb naturalnych Funkcja silnia Ciąg liczb Fibonacci Potęga naturalna liczby rzeczywistej Wielomiany Legendre’a

Rekurencja 2 Rekurencja jest użyteczna, bo umożliwia definiowanie nieskończonych zbiorów obiektów przy pomocy skończonych wyrażeń. Program rekurencyjny P można zapisać jako złożenie F instrukcji podstawowych Si nie zawierajęcych P i samego programu P. P = F(Si;P) Definicja Jeżeli podprogram P zawiera bezpośrednio odwołanie do samego siebie, to P nazywamy podprogramem bezpośrednio rekurencyjnym (direct recursive subprogram).

Rekurencja 3 Definicja Jeżeli podprogram P zawiera odwołanie do podprogramu Q, który zawiera bezpośrednie odwołanie do P, to P nazywamy podprogramem pośrednio rekurencyjnym (direct recursive subprogram). Definicja Wywołaniem rekurencyjnym podprogramu (recursive call of the subprogram) nazywamy wywołanie podprogramu, który zawiera wywołanie samego siebie (pośrednie, lub bezpośrednie) Podprogramy rekurencyjne umożliwiają wykonywanie nieskończonego procesu obliczeniowego i dlatego powstaje:

P = if W then F(Si;P), P = F(Si; if W then P). Rekurencja 4 Problem Zakończenie nieskończonego procesu obliczeniowego w skończonym czasie. Rozwiązanie. Wywołanie podprogramu P uzależnione jest od warunku W, który w pewnym momencie przestaje być prawdziwy, co kończy proces obliczeniowy. Zapisujemy to następująco: P = if W then F(Si;P), albo równoważnie: P = F(Si; if W then P).

P(n) = if n > 1 then F(Si;P(n-1)), Rekurencja 5 Prostą i skuteczną metodą zatrzymania procesu rekurencyjnego jest zastosowanie w podprogramie P parametru wejściowego n i wywołanie podprogramu z wartością n-1. Jeżeli W = n > 1, to następujące schematy gwarantują wykonanie podprogramu w skończonej liczbie kroków: P(n) = if n > 1 then F(Si;P(n-1)), P(n) = F(Si; if n > 1 then P(n-1)). Algorytmy rekurencyjne, a co za tym idzie podprogramy rekurencyjne stosuje się wtedy, gdy rozwiązywany problem, lub przetwarzane dane definiujemy rekurencyjnie. Nie zawsze algorytm rekurencyjny jest najefektywniejszym rozwiązaniem problemu. Przykład PP_028_Potega

Rekurencja 6

Rekurencja 7 Definicja Wariantem podstawowym, albo bazowym (base case) algorytmu nazywamy wariant, którego rozwiązanie może być wyznaczone bez rekurencji. Definicja Wariantem ogólnym (general case) algorytmu nazywamy wariant, którego rozwiązanie jest wyrażone w postaci prostszej wersji tego samego wariantu. Definicja Algorytmem rekurencyjnym (recursive algorithm) nazywamy algorytm wyznaczający rozwiązanie problemu obliczeniowego wg wariantu ogólnego i wariantu podstawowego (bazowego)

Rekurencja 8 Pisanie programów rekurencyjnych wymaga: Zrozumienia istoty rozwiązywanego problemu Zdefiniowania wariantów bazowych Zdefiniowania wariantów ogólnych Przykład PP_029_Permutacje_Rekurencyjnie

Rekurencja 9 Przykład PP_030_Wieze_Hanoi

Wyszukiwanie. Wyszukiwanie liniowe. Rekurencja 10 Wyszukiwanie. Wyszukiwanie liniowe. Dane wejściowe: Lista - tablica A(1..n) elementów i element v. Dane wyjściowe: Indeks i taki, że v = A(i), lub informacja, że v nie jest elementem listy. Przykład PP_031_Iterative_Version_Of_Sequential_Search PP_032_Recursive_Version_Of_Sequential_Search

Rekurencja 11 Możliwe jest przypadkowe wprowadzenie rekurencji w sytuacji, gdy nazwa podprogramu jest użyta jako identyfikator zmiennej w podprogramie. Zmienna := Nazwa_Podprogramu; Jeżeli podprogram ma parametry, to kompilator wykryje błąd. Jeżeli podprogram nie ma parametrów, to może powstać nieskończona rekurencja (infinite recursion) odpowiadająca pętli nieskończonej. W takim przypadku wystąpi STORAGE_ERROR.