Rekurencja.

Slides:



Advertisements
Podobne prezentacje
Instrukcje - wprowadzenie
Advertisements

Egzamin.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Schemat blokowy M START KONIEC
Język ANSI C Funkcje Wykład: Programowanie komputerów
Algorytmy – różne przykłady
Programowanie I Rekurencja.
Zadanie z dekompozycji
Techniki konstrukcji algorytmów
PROGRAMOWANIE STRUKTURALNE
algorytm znajdowania największego wspólnego dzielnika (NWD)
Iteracja, indukcja i rekurencja
ALGORYTMY I STRUKTURY DANYCH
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Sortowanie Zajęcia 13.
Liczby Pierwsze - algorytmy
ALGORYTMY GEOMETRYCZNE.
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.
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
WARTOŚĆ BEZWZGLĘDNA Z LICZBY
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
PODZBIORY ZBIORU LICZB RZECZYWISTYCH
Laboratoria z „wstęp do programowania”
Analiza kosztu zamortyzowanego
Analiza matematyczna - Ciągi liczbowe wykład I
Temat lekcji: GRANICA CIĄGU.
Podprogramy.
Algorytmy.
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Programowanie strukturalne i obiektowe
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Przegląd podstawowych algorytmów
Algorytmy i struktury danych
Algorytmy rekurencyjne - przykład
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Programy różne w C++
Programowanie strukturalne i obiektowe
Początek, koniec lub przerwanie algorytmu
Trójkąt Pascala Własności i Ciekawostki.
Wykład 10 typ zbiorowy rekurencja.
ZAPIS BLOKOWY ALGORYTMÓW
Instrukcje iteracyjne
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Co to jest dystrybuanta?
Metody numeryczne szukanie pierwiastka metodą bisekcji
Rozwiązywanie układów równań liniowych różnymi metodami
Zbiory Co to jest zbiór? Nie martw się, jeśli nie potrafisz odpowiedzieć. Nie ma odpowiedzi na to pytanie.
Algorytmy- Wprowadzenie do programowania
opracowała: Anna Mikuć
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Rekurencja.
Algorytmy Genetyczne Anna Tomkowska Politechnika Koszalińska
Algorytmy – wprowadzenie
Funkcje - rekurencja Zajęcia 8. Funkcje - definicja Ogólna postać funkcji w C++: typZwracany nazwaFunkcji(listaParametrówWejściowychFunkcji) { ciało funkcji.
szeregowe, z rozgałęzieniami, zawierające pętle
Temat 3: Podstawy programowania Algorytmy – 2 z 2 _________________________________________________________________________________________________________________.
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.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Rekurencja - Haskell Bartosz Pawlak Sebastian Żółtowski Adam Stegenda Krystian Sobótka Tomasz Gołębiewski.
Sposoby zapisu algorytmu
Rozdział 5 REKURENCJA.
Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Kinga Cichoń.
Opracowała: Justyna Tarnowska
Implementacja rekurencji w języku Haskell
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Rekurencja

Definicja rekurencji: 1. Zakończenie algorytmu jest jasno określone; 2. „Duży” problem = problem elementarny + problem o mniejszym stopniu skomplikowania niż problem początkowy.

Zadanie: dysponujesz tablicą n liczb całkowitych; należy określić, czy w tablicy występuje liczba x podana jako parametr? Algorytm rekurencyjny rozwiązania: Pobierz pierwszy niezbadany element tablicy n-elementowej; Jeśli ten element jest równy x, to wypisz “element znaleziono” i zakończ zadanie; W przeciwnym przypadku zbadaj pozostałą część tablicy.

Podstawowe błędy w programach rekurencyjnych: złe określenie warunku zakończenia programu; niewłaściwa dekompozycja problemu.

Jak wykonują się programy rekurencyjne? Przykład: Napisz program rekurencyjny na obliczenie silni z n: 0! = 1; n! = n*(n-1)!, dla n >= 1

Silnia: Obliczenia silnia(5) = 5*silnia(4) = 5*(4*silnia(3)) = 5*(4*(3*(2*(1*1)))) = 5*(4*(3*(2*1))) = 5*(4*(3*2)) = 5*(4*6) = 5*24 = 120

Niebezpieczeństwa rekurencji: nieskończona liczba wywołań rekurencyjnych; wielokrotne wykonanie identycznych obliczeń; przepełnienie stosu;

Ciąg Fibonacciego: fib(0) = 1, fib(1) = 1, fib(n) = fib(n-1) + fib(n-2), gdzie n  2. Zadanie polega na napisaniu programu generującego elementy ciągu Fibonacciego. Ciąg Fibonacciego jest używany do wielu różnych i czsami zaskakujących celów. Program FIB.CPP generuje liczby Fibonacciego. Spróbujmy prześledzić dokładnie wywołania rekurencyjne dla n = 4. Nieskomplikowana analiza prowadzi do następującego drzewa przedstawionego na rysunku poniżej:

Wywołania rekurencyjne funkcji Fibonacciego dla n = 4 Każdy zacieniowany prostokąt symbolizuje problem elementarny, natomiast problem o rozmiarze n  2 zostaje rozbity na dwa problemy o mniejszym stopniu skomplikowania: n-1 i n-2. Można łatwo dostrzec, że znaczna część obliczeń jest wykonywana wielokrotnie, np. cała gałąź zaczynająca się od fib(2) jest zdublowana. Funkcja Fib nie ma żadnej możliwości, aby to zauważyć. (Patrz program FIB.CPP). fib(0) = 1, fib(1) = 1, fib(n) = fib(n-1) + fib(n-2), gdzie n  2.