Menu
Coddy logo textTech

Funkcje rekurencyjne

Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 8 z 68.

Rekurencja to technika programowania, w której funkcja wywołuje samą siebie, aby rozwiązać problem. Tworzy to zachowanie przypominające pętlę, ale zamiast używać tradycyjnych pętli, funkcja wielokrotnie wywołuje samą siebie ze zmodyfikowanymi parametrami, aż znajdzie rozwiązanie.

Każda funkcja rekurencyjna musi zawierać dwa niezbędne elementy, aby działać poprawnie:

Przypadek bazowy: To warunek, który zatrzymuje rekurencję. Bez niego funkcja wywoływałaby samą siebie w nieskończoność, powodując awarię programu. Przypadek bazowy określa, kiedy funkcja powinna zwrócić wynik zamiast wywoływać samą siebie ponownie.

Krok rekurencyjny: To miejsce, w którym funkcja wywołuje samą siebie z nieco zmodyfikowaną wersją pierwotnego problemu, stopniowo zbliżając się do przypadku bazowego.

Oto prosty przykład funkcji rekurencyjnej, która oblicza silnię:

<?php
function factorial($n) {
    // Przypadek bazowy: silnia z 1 wynosi 1
    if ($n <= 1) {
        return 1;
    }
    
    // Krok rekurencyjny: n! = n * (n-1)!
    return $n * factorial($n - 1);
}

echo factorial(5);  // Wyświetla: 120
?>

W tym przykładzie factorial(5) wywołuje factorial(4), które wywołuje factorial(3) i tak dalej, aż dotrze do factorial(1) (przypadku bazowego). Następnie wyniki mnożą się w odwrotnej kolejności: 1 × 2 × 3 × 4 × 5 = 120.

challenge icon

Wyzwanie

Łatwy

Utwórz funkcję rekurencyjną o nazwie sumDigits, która przyjmuje dodatnią liczbę całkowitą i zwraca sumę jej cyfr. Funkcja powinna używać rekurencji do rozkładania liczby cyfra po cyfrze.

Otrzymasz jedno wejście: dodatnią liczbę całkowitą. Odczytaj dane wejściowe, wywołaj swoją funkcję rekurencyjną z tą liczbą i wypisz sumę jej cyfr.

Format wejścia: Jeden wiersz zawierający dodatnią liczbę całkowitą

Oczekiwane wyjście: Suma wszystkich cyfr liczby

Spróbuj swoich sił

<?php
// Wczytaj dane wejściowe
$number = intval(fgets(STDIN));

// TODO: Utwórz tutaj funkcję rekurencyjną sumDigits


// Wywołaj funkcję i wypisz wynik
echo sumDigits($number);
?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator PHP online