Özyineleme Nasıl Çalışır
Temel durumlar ve çağrı yığını.
Özyineleme Nasıl Çalışır, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.
Özyineleme Nedir?
Özyineleme, bir işlevin bir problemi çözmek için kendisini çağırmasıdır. Her çağrı, özgün problemin daha küçük bir parçası üzerinde çalışır.
C'de, çağrıların sonunda durmasını sağlayan bir yol olduğu sürece her işlev kendisini çağırabilir.
Temel Durum
Her özyinelemeli işlevin bir temel durumu olmalıdır: kendisini çağırmayı bırakıp doğrudan geri döndüğü koşul.
Temel durum olmadan işlev kendisini sonsuza kadar çağırır ve program çöker.
int countdown(int n) {
if (n == 0) return 0; /* base case */
return countdown(n - 1);
}Özyinelemeli Durum
Özyinelemeli durum, işlevin değiştirilmiş bir bağımsız değişkenle kendisini çağırdığı bölümdür.
Bu bağımsız değişken temel duruma doğru ilerlemelidir; aksi hâlde özyineleme sona ermez.
int sum_to(int n) {
if (n == 0) return 0; /* base case */
return n + sum_to(n - 1); /* recursive case */
}İlk Eksiksiz Program
Özyineleme kullanarak 1'den 5'e kadar olan sayıları toplayan eksiksiz bir program çalıştıralım.
Sonuç 15 olmalıdır.
#include <stdio.h>
int sum_to(int n) {
if (n == 0) return 0;
return n + sum_to(n - 1);
}
int main(void) {
printf("%d\n", sum_to(5));
return 0;
}Çağrıları İzleme
Özyinelemeyi elle izlemek yararlıdır. sum_to(3) için:
sum_to(3) = 3 + sum_to(2)
sum_to(2) = 2 + sum_to(1)
sum_to(1) = 1 + sum_to(0)
sum_to(0) = 0
Ardından çağrılar yukarı doğru geri döner: önce 1, sonra 3, ardından 6.
Çağrı Yığını
Her işlev çağrısı, parametrelerini ve yerel değişkenlerini tutan çağrı yığını üzerinde kendine ait bir alan alır.
Daha derine inerken çerçeveler birikir. Bir çağrı geri döndüğünde çerçevesi kaldırılır ve denetim çağıran işleve geri verilir.
Derinleşme ve Geri Çözülme
Özyinelemenin iki aşaması vardır. Derinleşme, çağrıların temel duruma doğru ilerleyerek daha derine gitmesidir.
Geri çözülme ise temel durumun geri dönmesi ve her çağrının, döndürülen değeri kullanarak kendi işini tamamlamasıdır.
#include <stdio.h>
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
int main(void) {
printf("%d\n", factorial(4));
return 0;
}Döndürülen Değerler Geri İletilir
Daha derindeki bir çağrının döndürdüğü değer, onu oluşturan çağrı tarafından kullanılır.
Sıralamanın önemli olmasının nedeni budur: en derindeki çağrı önce tamamlanır, ardından sonuçlar yığın boyunca yukarı çıkarken birleşir.
int power(int base, int exp) {
if (exp == 0) return 1;
return base * power(base, exp - 1);
}Özyineleme Sırasında Yazdırma
Özyinelemeli çağrıdan önce veya sonra yazdırabilirsiniz. Önce yazdırmak sayıların aşağı inerken, sonra yazdırmak ise yukarı çıkarken gösterilmesini sağlar.
#include <stdio.h>
void down(int n) {
if (n == 0) return;
printf("%d ", n);
down(n - 1);
}
int main(void) {
down(5);
printf("\n");
return 0;
}Yukarı Çıkarken Yazdırma
printf çağrısını özyinelemeli çağrının sonrasına taşıdığınızda sıra tersine döner. En derindeki çağrı önce yazdırır.
Bu şekilde 5 4 3 2 1 yerine 1 2 3 4 5 yazdırılır.
#include <stdio.h>
void up(int n) {
if (n == 0) return;
up(n - 1);
printf("%d ", n);
}
int main(void) {
up(5);
printf("\n");
return 0;
}Hatırlanması Gereken İki Kural
Doğru bir özyinelemeli işlev iki kurala uyar:
1. Özyineleme yapmadan geri dönen en az bir temel durumu vardır.
2. Her özyinelemeli çağrı, bağımsız değişkeni bir temel duruma yaklaştırır.
Bu kurallardan herhangi birini ihlal ederseniz program sonsuza kadar döngüde kalır.
Hızlı Kontrol
Özyinelemenin temellerini anlayıp anlamadığınızı sınayın.
Özet
Özyineleme, daha küçük bir girdi üzerinde kendisini çağırarak bir problemi çözer. Durmak için her zaman bir temel duruma ve ona doğru ilerleyen bir özyinelemeli duruma ihtiyaç vardır.
Her çağrı bir yığın çerçevesi kullanır; çağrılar geri çözülürken sonuçlar geri iletilir.
Sıkça Sorulan Sorular
“Özyineleme Nasıl Çalışır” dersi ücretsiz mi?
Evet — “Özyineleme Nasıl Çalışır” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.
“Özyineleme Nasıl Çalışır” dersinde ne öğreneceğim?
Temel durumlar ve çağrı yığını. C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Özyineleme Nasıl Çalışır” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Özyineleme Nasıl Çalışır
- Klasik Özyinelemeli Problemler
- Özyineleme ve Yineleme
- Yığın Taşmasını Önleme