Python Özyineli Fonksiyonlar – Recursive Function

Bir önceki makalede fonksiyon kavramını gördük. Python dilinde bir fonksiyon başka bir fonksiyonu çağırabilir. Fakat burada göreceğimiz bir fonksiyonun kendisini çağırabilmesidir. Kendisini çağırabilen fonksiyonlara özyineli (recursive) fonksiyon adı verilir.
Program: Faktöriyel hesabını özyineli fonksiyon yardımıyla yapalım.
def fakt(n):
if n==1:
return 1
else:
return n*fakt(n-1)
print("5!=", fakt(5))
print("8!=", fakt(8))
print("1!=", fakt(1))
Çıktı:
5!= 120
8!= 40320
1!= 1
Program: Fibonacci sayısının üretilmesinde özyineli fonksiyon kullanalım.
def fibon(n):
if n==1:
return 1
elif n==2:
return 1
else:
return fibon(n-1)+fibon(n-2)
for i in range(1,20):
print(fibon(i), end=" ")
print()
Çıktı:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Program: Pascal Üçgenini Özyineli Fonksiyon ile oluşturalım.
def pascal(n):
if n == 1:
return [1]
else:
SAT = [1]
ON_SAT = pascal(n-1)
for i in range(len(ON_SAT)-1):
SAT.append(ON_SAT[i] + ON_SAT[i+1])
SAT += [1]
return SAT
for i in range(1,11):
print(pascal(i))
Çıktı:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]