1 / 11

Rekurencja 1

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

Download Presentation

Rekurencja 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Rekurencja 2 Rekurencja jest użyteczna, bo umożliwia definiowanie nieskończonych zbiorów obiektów przy pomocy skończonych wyrażeń. Program rekurencyjnyPmożna zapisać jako złożenieFinstrukcji podstawowychSinie zawierajęcychPi samego programuP. P = F(Si;P) DefinicjaJeżeli podprogramPzawiera bezpośrednio odwołanie do samego siebie, toPnazywamy podprogramem bezpośrednio rekurencyjnym (direct recursive subprogram).

  3. Rekurencja 3 Definicja Jeżeli podprogramPzawiera odwołanie do podprogramuQ, który zawiera bezpośrednie odwołanie doP, toPnazywamy 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:

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

  5. Rekurencja 5 Prostą i skuteczną metodą zatrzymania procesu rekurencyjnego jest zastosowanie w podprogramiePparametru wejściowegoni wywołanie podprogramu z wartością n-1. JeżeliW = n > 1, to następujące schematy gwarantują wykonanie podprogramu w skończonej liczbie kroków: P(n) = if n > 1 thenF(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

  6. Rekurencja 6

  7. Rekurencja 7 Definicja Wariantem podstawowym, albobazowym (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)

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

  9. Rekurencja 9 PrzykładPP_030_Wieze_Hanoi

  10. Rekurencja 10 Wyszukiwanie.Wyszukiwanie liniowe. Dane wejściowe: Lista - tablicaA(1..n)elementów i elementv. Dane wyjściowe: Indeksitaki, żev = A(i), lub informacja, żevnie jest elementem listy. Przykład PP_031_Iterative_Version_Of_Sequential_Search Przykład PP_032_Recursive_Version_Of_Sequential_Search

  11. 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ąpiSTORAGE_ERROR.

More Related