Sobes.tech
Junior

Na czym polega różnica między realizacją tego samego zadania za pomocą rekurencji i pętli?

sobes.tech AI

Odpowiedź od AI

Rekurencja używa wywołania funkcji samej siebie do rozwiązania problemu, dzieląc go na mniejsze podzadania aż do przypadku bazowego. Natomiast pętla powtarza blok kodu określoną liczbę razy lub do spełnienia warunku.

Charakterystyka Rekurencja Pętla
Wykonanie Wywołanie funkcji Iteracja
Pamięć Używa stosu wywołań Używa zmiennych licznika/warunku
Czytelność Może być bardziej zwięzła dla niektórych zadań Często bardziej bezpośrednia
Wydajność Może być wolniejsza z powodu narzutów wywołań Zazwyczaj bardziej wydajna
Przepełnienie stosu Ryzyko przepełnienia przy głębokiej rekurencji Brak ryzyka przepełnienia stosu

Przykład w C# (silnia):

Implementacja rekurencyjna:

// Rekurencyjne obliczanie silni
int FactorialRecursive(int n)
{
    if (n == 0)
    {
        return 1; // Przypadek bazowy
    }
    return n * FactorialRecursive(n - 1); // Wywołanie rekurencyjne
}

Implementacja z pętlą:

// Obliczanie silni za pomocą pętli
int FactorialIterative(int n)
{
    int result = 1;
    for (int i = 1; i <= n; i++)
    {
        result *= i;
    }
    return result;
}