Recursive (Özyinelemeli) Fonksiyonlar – Python, PHP ve ASP Örnekleri

Recursive fonksiyonlar, kendi kendini çağıran fonksiyonlardır. Karmaşık problemleri daha kısa ve okunaklı bir şekilde çözmek için kullanılırlar.

Recursive fonksiyonlarda mutlaka bir durma koşulu (base case) olmalıdır; aksi takdirde fonksiyon sonsuz döngüye girer.

1. Python’da Recursive Fonksiyonlar

Python ile faktöriyel hesaplama örneği:

1Python - Recursive fonksiyon
2
3def faktoriyel(n):
4if n == 0 or n == 1:
5return 1
6else:
7return n * faktoriyel(n - 1)
8
9print("5! =", faktoriyel(5)) # 5! = 120
Base case: n == 0 or n == 1 ile recursion durdurulur.

2. PHP’de Recursive Fonksiyonlar

PHP ile faktöriyel örneği:

1<?php
2# PHP - Recursive fonksiyon
3function faktoriyel($n) {
4if ($n == 0 || $n == 1) {
5return 1;
6} else {
7return $n * faktoriyel($n - 1);
8}
9}
10
11echo "5! = " . faktoriyel(5) . "\n"; // 5! = 120
12?>
Fonksiyon kendi kendini $n - 1 ile çağırır ve sonunda base case ile durur.

3. ASP’de Recursive Fonksiyonlar

ASP (VBScript) ile faktöriyel örneği:

1' ASP - Recursive fonksiyon
2Function Faktoriyel(n)
3If n = 0 Or n = 1 Then
4Faktoriyel = 1
5Else
6Faktoriyel = n * Faktoriyel(n - 1)
7End If
8End Function
9
10Response.Write "5! = " & Faktoriyel(5) & "<br>" ' 5! = 120
ASP’de de base case ile recursion durdurulur; aksi hâlde stack overflow hatası alınır.

İpuçları

Recursive fonksiyonlar genellikle matematiksel ve ağaç/graph tabanlı problemlerde kullanılır

Base case olmazsa sonsuz döngü ve bellek taşması meydana gelir

Küçük problemleri çözmek için recursion okunabilirliği artırır, ancak çok büyük veri setlerinde dikkatli kullanılmalıdır

Recursive fonksiyonlarda her çağrıda yeni bir bellek alanı ayrılır; gereksiz kullanım performansı düşürebilir.




konu hakkında tepkinizi verebilirsiniz