Definicja rekurencyjna i ślad wywołań

Rekurencja w praktyce: silnia, potęga i drzewo wywołań - Informatyka - liceum klasa 2, zakres rozszerzony (Python)

Wiele pojęć matematycznych ma **definicję rekurencyjną**: `0! = 1`, `n! = n · (n - 1)!`, `x⁰ = 1`, `xⁿ = x · xⁿ⁻¹`. Funkcja rekurencyjna przepisuje taką definicję wprost: przypadek bazowy (warunek stopu) i wywołanie dla mniejszego argumentu. Program wypisuje **ślad**: każde wywołanie z wcięciem równym głębokości, a potem wynik, który wraca. Widać, że wywołania schodzą w głąb aż do przypadku bazowego, a wyniki są liczone dopiero w drodze powrotnej.

def factorial(n, depth=0):
    print("  " * depth + "factorial(" + str(n) + ")")
    if n == 0:
        result = 1
    else:
        result = n * factorial(n - 1, depth + 1)
    print("  " * depth + "zwraca " + str(result))
    return result

factorial(4)

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Informatyka - liceum klasa 2, zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.