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 |