0Pricing
C Academy · Ders

Klasik Özyinelemeli Problemler

Faktöriyel ve Fibonacci.

Klasik Özyinelemeli Problemler, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 2. 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.

Klasik Problemler

Bazı problemler özyinelemeye doğal olarak uyarlanır. Klasik örnekleri öğrenmek, yeniden kullanabileceğiniz örüntüler edinmenizi sağlar.

Bu derste faktöriyel, Fibonacci, rakamların toplamı, en büyük ortak bölen ve çıktıyı tersine çevirme konularını ele alıyoruz.

Faktöriyel

n sayısının faktöriyeli, n ile n eksi 1'in faktöriyelinin çarpımıdır; 1! değeri 1'e eşittir.

Bu, açık bir temel durum ve tek bir özyinelemeli çağrı içeren, ders kitaplarındaki özyineleme örneğidir.

#include <stdio.h>

long factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

int main(void) {
    printf("%ld\n", factorial(6));
    return 0;
}

Fibonacci Sayıları

Her Fibonacci sayısı kendisinden önce gelen iki sayının toplamıdır. Özyinelemeli tanım iki temel durum gerektirir: fib(0)=0 ve fib(1)=1.

Bu sürüm her adımda iki çağrı yapar.

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

Fibonacci'yi Çalıştırma

İşte eksiksiz program. fib(10), 55 yazdırmalıdır.

Bu saf sürüm aynı işlemleri tekrarladığı için büyük n değerlerinde yavaştır.

#include <stdio.h>

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

int main(void) {
    printf("%d\n", fib(10));
    return 0;
}

Rakamların Toplamı

Bir sayının rakamlarını toplamak için son rakamı n % 10 ile alın ve kalan kısım üzerinde n / 10 ile özyinelemeye devam edin.

Temel durum, n'nin 0'a ulaşmasıdır.

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

Rakam Toplamı Uygulamada

1234 için toplam 1+2+3+4 = 10'dur. Bunu eksiksiz bir programla doğrulayalım.

#include <stdio.h>

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

int main(void) {
    printf("%d\n", digit_sum(1234));
    return 0;
}

En Büyük Ortak Bölen

Öklid algoritması doğal olarak özyinelemelidir. a ve b'nin GCD'si, b ile a % b'nin GCD'sine eşittir.

b 0 olduğunda yanıt a'dır.

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

GCD Eksiksiz Programı

48 ve 18'in GCD'si 6'dır. Bu program bunu yazdırır.

#include <stdio.h>

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

int main(void) {
    printf("%d\n", gcd(48, 18));
    return 0;
}

Bir Sayıyı Tersine Çevirme

Özyineleme çıktıyı da yönlendirebilir. Özyinelemeli çağrıdan sonra son rakamı yazdırarak işleme sırasını doğal olarak tersine çevirirsiniz.

Bu yardımcı işlev, bir sayının her rakamını özyineleme kullanarak kendi satırına yazdırır.

#include <stdio.h>

void print_digits(int n) {
    if (n == 0) return;
    print_digits(n / 10);
    printf("%d ", n % 10);
}

int main(void) {
    print_digits(729);
    printf("\n");
    return 0;
}

Üs Alma İşlevi

Bir tabanı bir üsse yükseltmek de özyinelemelidir: taban^üs, taban ile taban^(üs-1)'in çarpımına eşittir.

Temel durum, üssün 0 olmasıdır ve bu durumda 1 döndürülür.

long power(int base, int exp) {
    if (exp == 0) return 1;
    return base * power(base, exp - 1);
}

Yeniden Kullanacağınız Örüntüler

Ortak yapıya dikkat ediniz: bir temel durumu denetleyin, ardından geçerli adımı daha küçük bir çağrının sonucuyla birleştirin.

Bu örüntüyü fark ettiğinizde birçok problem kısa özyinelemeli işlevlere dönüşür.

Kısa Kontrol

Doğru temel durumları seçiniz.

Özet

Faktöriyel, Fibonacci, basamak toplamı, GCD ve üs alma aynı özyinelemeli örüntüyü paylaşır: temel durumu ele alın, ardından geçerli değeri daha küçük bir alt problemle birleştirin.

Bu şablonlar birçok başka göreve de uygulanabilir.

Sıkça Sorulan Sorular

“Klasik Özyinelemeli Problemler” dersi ücretsiz mi?

Evet — “Klasik Özyinelemeli Problemler” 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.

“Klasik Özyinelemeli Problemler” dersinde ne öğreneceğim?

Faktöriyel ve Fibonacci. 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 2. dersidir.

“Klasik Özyinelemeli Problemler” 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

  1. Özyineleme Nasıl Çalışır
  2. Klasik Özyinelemeli Problemler
  3. Özyineleme ve Yineleme
  4. Yığın Taşmasını Önleme
← C Academy Sayfasına Dön