Menu
Coddy logo textTech

Özyinelemeli Fonksiyonlar Bölüm 2

Coddy'nin Python Journey'sinin Logic & Flow bölümünün bir parçası — ders 61 / 78.

Özyinelemeli (recursive) fonksiyonların genellikle iki bölümü vardır:

  1. Temel Durum: Özyinelemenin ne zaman durması gerektiğini tanımlar.
  2. Özyinelemeli Adım: Fonksiyonu daha küçük bir girdiyle tekrar çağırır.

Örnek: Özyineleme (recursion) kullanarak faktöriyel hesaplama:

def factorial(n):
    if n == 1:  # Temel durum
        return 1
    return n * factorial(n - 1)  # Özyinelemeli çağrı

print(factorial(5))  # Çıktı: 120

Burada fonksiyon, 1 değerine ulaşana kadar kendisini n - 1 ile çağırmaya devam eder ve bu noktada özyineleme durur.

Örnek: Bir Diziyi Tersine Çevirme:

def recursive_reverse(s):
	if len(s) <= 1:  # Temel durum: boş veya tek karakterli dizi
		return s
	else:
		return recursive_reverse(s[1:]) + s[0]  # Özyinelemeli adım

text = "hello"
result = recursive_reverse(text)
print(result)
# Çıktı: olleh

Bu örnekte, recursive_reverse fonksiyonu, dize boşalana veya tek bir karaktere sahip olana kadar kendisini dizenin geri kalanıyla (s[1:]) çağırır. Her çağrı, ilk karakteri özyinelemeli çağrının sonucuna ekleyerek dizeyi etkili bir şekilde tersine çevirir.

challenge icon

Görev

Kolay

Pozitif bir n tam sayısını argüman olarak alan ve n. Fibonacci sayısını döndüren fibonacci adında özyinelemeli (recursive) bir fonksiyon yazın. Fibonacci dizisi şu şekilde tanımlanır:

  • fibonacci(1) = 0
  • fibonacci(2) = 1
  • n > 2 için fibonacci(n) = fibonacci(n-1) + fibonacci(n-2).

Örnek Girdi:

n = 6

Örnek Çıktı:

5

Kopya kağıdı

Özyinelemeli (rekürsif) fonksiyonların iki temel parçası vardır:

  1. Taban Durumu (Base Case): Özyinelemenin ne zaman durması gerektiğini tanımlar
  2. Özyinelemeli Adım (Recursive Step): Fonksiyonu daha küçük bir girdiyle tekrar çağırır

Faktöriyel örneği:

def factorial(n):
    if n == 1:  # Taban durumu
        return 1
    return n * factorial(n - 1)  # Özyinelemeli çağrı

print(factorial(5))  # Çıktı: 120

Metin tersine çevirme örneği:

def recursive_reverse(s):
    if len(s) <= 1:  # Taban durumu: boş veya tek karakterli dize
        return s
    else:
        return recursive_reverse(s[1:]) + s[0]  # Özyinelemeli adım

text = "hello"
result = recursive_reverse(text)
print(result)  # Çıktı: olleh

Kendin dene

def fibonacci(n):
    # Kodu buraya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Logic & Flow bölümündeki tüm dersler