Ö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:
- Özyinelemeyi durdurmak için bir taban durum (base case)
- 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
Görev
Kolay1'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:
- n değeri 1 olduğunda bir temel durum (base case) kullanın (1 döndürün)
- Aksi takdirde, n artı 1'den (n-1)'e kadar olan sayıların toplamını döndürün
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;
}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
4Kontrol Akışı
If İfadesiIf - ElseElse-IfSwitch CaseTernary Koşul OperatörüÖzet Meydan Okumaİç İçe If - Else7Fonksiyonlar
Fonksiyon TanımlamaDönüş TürleriParametrelerTekrar Görevi #1Özyineleme TemelleriFonksiyon PrototipleriTekrar Görevi #22Değişkenler
Veri TipleriTam Sayı (Integer)Float - DoubleKarakterlerBooleanlarSabitlerprintf TemelleriDeğişken İsimlendirme KurallarıTip Dönüşümü Bölüm 1Tip Dönüşümü Bölüm 2Özet Meydan Okuması3Operatörler
Aritmetik OperatörlerModül OperatörüArtırma/AzaltmaAtama Operatörleriİlişkisel OperatörlerMantıksal Operatörler Bölüm 1Mantıksal Operatörler Bölüm 2Mantıksal Operatörler Bölüm 3Özet Meydan Okuması