Czym jest rekurencja? [Python] odc. 26 z serii podstaw Pythona

Поділитися
Вставка
  • Опубліковано 12 лип 2019
  • W tym odcinku omawiam rekurencję w Pythonie.
    Zagadnienie rekurencji jest jednym z trudniejszych koncepcyjnie zagadnień omawianych przeze mnie w tym kursie podstaw programowania.
    Funkcja rekurencyjna to taka funkcja, która wywołuje samą siebie.
    Każda funkcja rekurencyjna (skończona) potrzebuje dwóch przypadków, bazowego oraz rekurencyjnego. W każdym wykonaniu program sprawdza czy spełniony jest warunek bazowy. Jeśli tak to jest on wykonywany i funkcja zostaje zakończona. W przeciwnym wypadku wykonujemy przypadek rekurencyjny w którym funkcja wywołuje samą siebie.
    Każde zagadnienie rekurencyjne można również rozwiązać iteracyjnie za pomocą dobrze nam znanych pętli. Co więcej rozwiązania iteracyjne są zazwyczaj szybsze od rozwiązań rekurencyjnych. Zaletą rekurencji jest upraszczanie kodu. Wiele zagadnień wymagających rozwlekłych rozwiązań iteracyjnych sprowadza się do kilku linii kodu w rozwiązaniu rekurencyjnym. Zadaniem programisty jest ocenienie czy w danej sytuacji opłaca się przyspieszyć działanie programu (wybierając rozwiązanie iteracyjne), czy samego programistę (wybierając rozwiązanie rekurencyjne).
    Kod:
    github.com/djeada/Kurs-Podsta...

КОМЕНТАРІ • 10

  • @RK-lo7ou
    @RK-lo7ou 4 роки тому +10

    Świetnie wyjaśnione. Prosty język, proste przypadki.

  • @gwend5747
    @gwend5747 4 роки тому +5

    Jest to naprawdę świetny kawał roboty. Szkoda, że taka mało rozpowszechniony, bowiem naprawdę warto.

  • @zdzisiutaranaga4538
    @zdzisiutaranaga4538 4 роки тому +3

    Dobrze wyjaśnione. Im więcej przykładów tym lepiej.

  • @johnymnemonic4657
    @johnymnemonic4657 Рік тому +2

    Rekurencja działa w ten sposób,że dla wyników jest tworzony stos.Przy silni z 6 nie wie ile wynosi silnia z 6 więc odkłada miejsce na stosie,wywołuje silnię z 5 znowu na stos,silnia z 4 znowu na stos,aż dochodzi do silni z 1,po to jest podstawowy przypadek i zaczyna się wypełnianie stosu w górę. 1*(n+1)*(n+2)*(n+3),miejsca są zapełniane wynikami.Dopiero mu wychodzi 1*2*3*4*5*6 oblicza to i mu wychodzi 720.n+1 dla ruchu w górę,aż do ostatniej zadanej silni.Rekurencja jest potrzebna przy fraktalach.Trójkąt Sierpińskiego to 3 linijki wywoływane w rekurencyjnej funkcji ze znajdowaniem środka trójkąta.Duży trójkąt jest dzielony na 3 mniejsze,Te jeszcze na 3 aż do zerowego stopnia podziału.

  • @jarosawkamczynski5485
    @jarosawkamczynski5485 Рік тому

    Ni chu... nie mogę tego załapać🥵

  • @arkadiuszmazur6468
    @arkadiuszmazur6468 2 роки тому +3

    Kolejny świetny materiał.
    Zauważyłem, że przy ciągu Fibonacciego, szukając wyrazu ciągu większego od powiedzmy 35,
    pętle rozwiązują problem w mgnieniu oka, gdzie przy zastosowaniu rekurencji trzeba się trochę naczekać na wynik.
    Tak zwykle to wygląda czy jest to powiedzmy odosobniony przypadek?
    Czy warto skracać kod, skoro "dłuższe" rozwiązanie powoduje szybsze działanie programu?
    Pozdrawiam.

    • @johnymnemonic4657
      @johnymnemonic4657 Рік тому

      Przy niektórych rozwiązaniach rekurencja ułatwia zapis.Tam gdzie dzielisz jakieś figury,odcinki.Nierekurencyjny kod zajmowałby dużo więcej miejsca.

  • @grizzly7516
    @grizzly7516 3 роки тому +1

    Żart niezły hahaha.

  • @fabiobailando812
    @fabiobailando812 3 роки тому

    co