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;
}