Funkcje rekurencyjne

Coś jest niejasne? Wejdź na Forum PHP i uzyskaj pomoc

Funkcje rekurencyjne

Ostatnim razem napisaliśmy funkcję obliczającą silnię. Teraz zobaczymy, jak wykonać to zadanie za pomocą funkcji rekurencyjnej. Funkcją rekurencyjną nazywamy funkcję odwołującą się do siebie samej. Przykład powinien nieco rozjaśnić wątpliwości.

Zobaczmy listing:

<?php

function silnia($liczba)
{
   if($liczba < 2) 
      return 1;
   else
      return $liczba*silnia($liczba-1);  
}

echo silnia(5);

?>

Przeanalizujmy działanie kodu. Jeżeli liczba jest mniejsza od 2, czyli 0 lub 1, zwrócona zostanie wartość 1 (z definicji funkcji). Jeśli natomiast liczba jest większa, wywołujemy funkcję ponownie z argumentem pomniejszonym o 1. Wynika to z faktu, że 4! = 4 * 3!. Robimy tak dopóki nie zejdziemy do jedynki.

Plusy i minusy stosowania funkcji rekurencyjnych

Podstawową zaletą funkcji rekurencyjnych jest prostota kodu. Na funkcji obliczającej silnię nie widać tego tak znacząco, lecz pisząc bardziej rozbudowane konstrukcje, jest to zauważalne. Programiści jednak odchodzą od stosowania funkcji rekurencyjnych z racji dużej ilości pamięci, zajmowanej podczas kolejnych wywołań. Można sobie to łatwo zobrazować.

Licząc silnię z dziesięciu, musimy wywołać funkcję dziesięć razy (z argumentem: 10, 9, 8 itd.). Dodatkowo system musi zapamiętać wynik zwracany przez każdą z funkcji. Z tego powodu bardzo zachęcam do stosowania klasycznych funkcji. Na pewno usprawni to działanie strony

Następna lekcja poświęcona jest tablicom. Są to kontenery przechowujące wiele wartości, do których odwołujemy się za pomocą indeksu. Zapraszam.

Spis lekcji w rozdziale trzecim

Poprzednia lekcja: Funkcje kompleksowo Następna lekcja: Tablice