Rekurencja w programowaniu. Jak działa rekurencja – wyjaśnienie.

Rekurencja w programowaniu – podstawy krok po kroku. Jak działa rekurencja ?

Ucząc się podstaw programowania w dowolnym języku, w końcu będziemy zmuszeni poznać znaczenie rekurencji. O ile większość programistów posiada wiedzę dotyczącą tego czym jest rekurencja, to rzadko z niej korzysta, lub nie bardzo wie jak można jej użyć. W tym poradniku postaram się wyjaśnić w prosty sposób jak działa rekurencja i jak z niej korzystać.

rekursja-300x240 Rekurencja w programowaniu. Jak działa rekurencja - wyjaśnienie.

Źródło: flickr,▓▒░TORLEY░▒▓

Czym jest rekurencja w programowaniu ?

Rekurencja w dowolnym języku programowania to nic innego jak wywołanie przez funkcję samej siebie. Na myśl przychodzi mi porównanie rekurencji do pętli, ponieważ jest ona również wywoływana określoną liczbę razy (do momentu, gdy zajdzie warunek stopu). I tak jest w rzeczywistości – rekurencja dość często zastępuje pętle w programowaniu.

for (int i = 0; i < 5; i++) {
 Console.WriteLine("Wywolanie" + i.ToString());
}

Moglibyśmy zastąpić powyższy fragment kodu, za pomocą rekurencyjnego wywołania funkcji:

static public void Wyswietl(ref int licznik){
   Console.WriteLine("Wywolanie" + licznik.ToString());
   licznik++;
   if (licznik < 5) {  Wyswietl(ref licznik); licznik++; }
}

Wywołanie funkcji będzie miało postać:  Wyswietl(ref licznik);

W efekcie otrzymamy ten sam rezultat tzn. na ekranie zostaną wyświetlone kolejno komunikaty :

  • Wywolanie 0
  • Wywolanie 1
  • Wywolanie 2
  • Wywolanie 3
  • Wywolanie 4

Oczywiście powyższy przykład jest prosty do wykonania i byłoby głupotą pisanie funkcji rekurencyjnej dla tak postawionego problemu. Większość zadań programistycznych można wykonać w klasyczny sposób za pomocą pętli, ale zdarzają się również takie, które wykonywane za pomocą klasycznych metod stają się mało czytelne.

Posłużę się teraz dość często spotykanym przykładem Silni (przypomnę, że jest to iloczyn wszystkich liczb naturalnych nie większych od n). Dla naszego przykładu weźmiemy sobie do policzenia 4! = 1 * 2 * 3 * 4 = 24.

I w tym wypadku wykonanie zadania za pomocą klasycznej pętli jest bardzo proste, ale naszym celem jest lepsze poznanie rekurencji – dlatego napiszemy funkcję rekurencyjną, która policzy silnię:

static public int Silnia(int podstawa) {
if (podstawa < 1) return 1;
 else return podstawa * Silnia(podstawa - 1);
        }

Jeżeli prześledzimy sposób w jaki obliczany jest wynik dla tak prostego kodu, to w przyszłości łatwiej nam będzie pisać funkcje wykorzystujące rekurencję.

Wspomniana powyżej funkcja Silnia(int podstawa), zwraca wynik: podstawa * Silnia(podstawa -1), a więc kolejne wywołania powodują że otrzymujemy:

  • 4 * Silnia(3)
  • 3 * Silnia(2)
  • 2* Silnia(1)
  • 1* Silnia(0)
  • Silnia(0) zwraca nam 1

A więc otrzymujemy równanie: 4 * 3 * 2 * 1 * 1 = 24, warto jednak dodać, że wynik liczony jest od końca – a więc de facto mamy 1 * 1 * 2 * 3 * 4.

Można to jeszcze przedstawić w ten sposób: 4 * Silnia(3) = 4 * 3 * Silnia(2) = 4 * 3 * 2 * Silnia(1) = 4 * 3 * 2 * 1 * Silnia (0) = 4 * 3 * 2 * 1 * 1

Mam nadzieję, że w tym krótkim wpisie chociaż trochę rozjaśniłem Wam działanie rekurencji. Warto w takich sytuacjach korzystać z debuggera, który pozwoli Ci prześledzić krok po kroku proces zdobywania rozwiązania. Jeżeli masz jakieś pytania, lub wątpliwości, a może chciałbyś żebym w którymś z wpisów na blogu poruszył inny temat związany z programowaniem to napisz w komentarzu 😉

Przeczytaj również

Podstawy Malwarebytes Anti-Malware. Jak usunąć wir... Obsługa programu Malwarebytes AntiMalware. Jak usunąć wirusy z komputera ? Komputer nagle zwolnił, na pulpicie pojawiają się dziwne komunikaty, a int...
Automatyczne wykonywanie zrzutu ekranu. Wtyczka do... Wykonywanie zrzutu ekranu. Jak działa Fireshot - wtyczka do zrzutów ekranu. Zrzut ekranu wybranego fragmentu na stronie internetowej - to proste ! Ba...
Automatyczne kolorowanie czarno-białych zdjęć. Jeżeli chcesz, aby Twoje czarno-białe fotografie nabrały kolorów, wcale nie musisz uczyć się obsługi skomplikowanych programów graficznych, wystarczy ...
Korzystasz z Winrara, lub Total Commandera ? Możes... Winrar, oraz Total Commander to jedne z najpopularniejszych programów, które instalujemy na naszych komputerach. Mało kto zdaje sobie sprawę, że posia...

One thought on “Rekurencja w programowaniu. Jak działa rekurencja – wyjaśnienie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany.