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.