PYTHON Rekurencja
Rekurencja jest jednym ze sposobów rozwiązywania problemu. Sposób ten zakłada rozbijanie problemu na coraz to mniejsze i mniejsze części, aż dojdziemy do momentu, że problem będzie tak niewielki, że zostanie łatwo rozwiązany.
W programowaniu rekurencja sprowadza się do funkcji, które same siebie wywołują.
Rekurencja opiera się na 3 prawach:
- funkcja rekurencyjna musi posiadać bazowy problem
- funkcja rekurencyjna musi zmierzać do bazowego problemu
- funkcja rekurencyjna musi sama siebie wywoływać
Standardowym przykładem funkcji rekurencyjnej jest obliczanie silni. Dla przypomnienia 3! = 1*2*3 = 6
def silnia (x) :
if x in (0, 1):
return 1
else :
return x * silnia (x - 1)
print(silnia(3))
Efekt: 6
Dla przypadku gdy wartość x = 1 wynikiem jest 1.
Dla pozostałych przypadków, a zakładamy, że funkcja przyjmuje wartości liczb naturalnych, funkcja zwraca aktualną wartość pomnożoną przez wartość wywołanej funkcji z parametrem wejściowym o jeden mniejszym.
W podanym przykładzie kolejne kroki przedstawiają się następująco:
- wywołanie silnia(3)
- funkcja zwraca 3 * silnia(2)
- funkcja silnia (2) zwraca 2 * silnia(1)
- silnia(1) jest problemem bazowym, zwraca więc 1
- wyniki kolejnych zwróceń składają się w całość, mamy 3 * 2 * 1, co daje nam wynik 6
Spróbujmy jeszcze obliczyć rekurencyjnie sumę liczb od 1 do n, gdzie n jest dowolną liczbą naturalną. Dla wartości 5 wynik powinien przedstawiać się następująco: 1 + 2 + 3 + 4 + 5 = 15
def suma (n) :
if n == 1 :
return 1
else :
return n + suma(n-1)
print(suma(5))
Efekt: 15
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |