Rekurzija je postupak koji u svojoj definiciji koristi samog sebe. U Pajtonu se implementira kao funkcija koja poziva samu sebe.
Ustaljen primer rekurzije je faktorijel. Faktorijel prirodnog broja N možemo definisati kao proizvod broja N i faktorijela njegovog prethodnika u nizu prirodnih brojeva - N-1. Ukoliko je N=1, faktorijel je jednak 1.
Ukoliko faktorijel obeležimo slovom f, onda ovu definiciju možemo zapisati ovako:
f(N) = N * f(N-1).
Sledi implementacija u Pajtonu.
In [8]:
def factorial(num):
if num == 1:
return 1
else:
return num * factorial(num - 1)
N = 5
fact = factorial(N)
print("Factorial of %d is %d" % (N, fact))
Još jedan ustaljeni primer rekurzije je Fibonačijev niz. Fibonačijev niz se definiše na sledeći način: prvi i drugi član niza jednaki su 1, a svaki sledeći član niza jednak je zbiru prethodna dva člana. Prvih nekoliko članova Fibnačijevog niza: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...
Sledi implementacija u Pajtonu: funkcija koja računa N-ti element Fibonačijevog niza.
In [9]:
def fibonacci(nth):
if nth <= 2:
return 1
else:
return fibonacci(nth - 1) + fibonacci(nth - 2)
nth = 10
fib = fibonacci(nth)
print("The %dth element of the Fibonacci series is: %d" % (nth, fib))