Menu
Coddy logo textTech

Özyineleme Temelleri

Coddy'nin C Journey'sinin Fundamentals bölümünün bir parçası — ders 50 / 63.

Özyineleme (Recursion), bir fonksiyonun bir problemi çözmek için kendisini çağırdığı bir tekniktir. Büyük bir problemi daha küçük, benzer problemlere bölerek çözmek gibidir.

Faktöriyel hesaplayan basit bir özyinelemeli (recursive) fonksiyona bakalım:

int factorial(int n) {
    // Base case: factorial of 0 or 1 is 1
    if (n <= 1) {
        return 1;
    }
    
    // Recursive case: n! = n * (n-1)!
    return n * factorial(n - 1);
}

Her özyinelemeli fonksiyonun şunlara ihtiyacı vardır:

  1. Özyinelemeyi durdurmak için bir taban durum (base case)
  2. Taban duruma doğru ilerleyen bir özyinelemeli durum (recursive case)

Örneğin, factorial(3) hesaplanırken:

  • factorial(3), factorial(2)'yi çağırır
  • factorial(2), factorial(1)'i çağırır
  • factorial(1), 1 döndürür (temel durum)
  • factorial(2), 2 * 1 = 2 sonucunu döndürür
  • factorial(3), 3 * 2 = 6 sonucunu döndürür
challenge icon

Görev

Kolay

1'den n'e kadar olan sayıların toplamını hesaplamak için özyineleme (recursion) kullanan sumToN adında bir fonksiyon oluşturun.

Örneğin:

  • sumToN(3) değeri 6 döndürmelidir (1 + 2 + 3)
  • sumToN(5) değeri 15 döndürmelidir (1 + 2 + 3 + 4 + 5)

Fonksiyonunuz şunları yapmalıdır:

  1. n değeri 1 olduğunda bir temel durum (base case) kullanın (1 döndürün)
  2. Aksi takdirde, n artı 1'den (n-1)'e kadar olan sayıların toplamını döndürün

Kopya kağıdı

Özyineleme (Recursion), bir problemi daha küçük ve benzer problemlere bölerek çözmek için bir fonksiyonun kendisini çağırdığı bir tekniktir.

Her özyinelemeli fonksiyonun şunlara ihtiyacı vardır:

  1. Özyinelemeyi durdurmak için bir temel durum (base case)
  2. Temel duruma doğru ilerleyen bir özyinelemeli durum (recursive case)

Örnek - faktöriyel fonksiyonu:

int factorial(int n) {
    // Temel durum: 0 veya 1'in faktöriyeli 1'dir
    if (n <= 1) {
        return 1;
    }
    
    // Özyinelemeli durum: n! = n * (n-1)!
    return n * factorial(n - 1);
}

factorial(3) nasıl çalışır:

  • factorial(3), factorial(2)'yi çağırır
  • factorial(2), factorial(1)'i çağırır
  • factorial(1), 1 döndürür (temel durum)
  • factorial(2), 2 * 1 = 2 döndürür
  • factorial(3), 3 * 2 = 6 döndürür

Kendin dene

#include <stdio.h>

// sumToN fonksiyonunuzu buraya yazın

// main() fonksiyonunu değiştirmeyin
int main() {
    int n;
    scanf("%d", &n);
    
    printf("%d", sumToN(n));
    return 0;
}
quiz iconKendini test et

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

Fundamentals bölümündeki tüm dersler