Özyinelemenin Temelleri
Coddy'nin C Journey'sinin Temeller bölümünün bir parçası. Ders 50 / 63.
Özyineleme, bir fonksiyonun bir problemi çözmek için kendisini çağırdığı bir tekniktir. Büyük bir problemi daha küçük ve benzer problemlere bölerek çözmeye benzer.
Faktöriyeli hesaplayan basit bir özyinelemeli fonksiyona bakalım:
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);
}Her özyinelemeli fonksiyon şunlara ihtiyaç duyar:
- Özyinelemeyi durdurmak için bir temel durum
- Temel duruma doğru ilerleyen özyinelemeli bir durum
Örneğin, factorial(3) hesaplanırken:
- factorial(3), factorial(2) çağrısını yapar
- factorial(2), factorial(1) çağrısını yapar
- factorial(1), 1 değerini döndürür (temel durum)
- factorial(2), 2 * 1 = 2 değerini döndürür
- factorial(3), 3 * 2 = 6 değerini döndürür
Görev
Kolay1'den n'ye kadar olan sayıların toplamını özyineleme kullanarak hesaplayan sumToN adlı bir fonksiyon oluştur.
Örneğin:
- sumToN(3), 6 (1 + 2 + 3) döndürmelidir
- sumToN(5), 15 (1 + 2 + 3 + 4 + 5) döndürmelidir
Fonksiyonun şunları yapmalıdır:
- n 1 olduğunda bir temel durum kullan (1 döndür)
- Aksi hâlde, n ile 1'den (n-1)'e kadar olan sayıların toplamını döndü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;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Kontrol Akışı
If İfadesiIf - ElseElse-IfSwitch CaseÜçlü Koşullu OperatörTekrar Mücadelesiİç İçe If - Else7Fonksiyonlar
Bir Fonksiyon BildirmeDönüş TürleriParametrelerTekrar Meydan Okuması #1Özyinelemenin TemelleriFonksiyon PrototipleriTekrar Meydan Okuması #22Değişkenler
Veri TürleriTamsayıFloat - DoubleKarakterlerBoolean DeğerleriSabitlerprintf TemelleriDeğişken Adlandırma KurallarıTür Dönüştürme 1. BölümTür Dönüştürme 2. BölümTekrar Görevi3Operatörler
Aritmetik OperatörlerModül OperatörüArtırma/AzaltmaAtama OperatörleriKarşılaştırma OperatörleriMantıksal Operatörler 1. BölümMantıksal Operatörler 2. BölümMantıksal Operatörler 3. BölümTekrar MücadelesiKendi başına pratik yap: Online C derleyicisi