Menu
Coddy logo textTech

Özyinelemeli Faktöriyel

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 46 / 56.

Bir sayının faktöriyeli, özyinelemeyi (recursion) iş başında göstermek için mükemmel bir örnektir. n'in faktöriyeli (n! olarak yazılır), 1'den n'e kadar olan tüm pozitif tam sayıların çarpımıdır. Örneğin, 5! = 5 × 4 × 3 × 2 × 1 = 120.

Faktöriyeli özyineleme için ideal kılan şey, kendisi cinsinden tanımlanabilmesidir: n! = n × (n-1)!. Bu, 5! hesaplamak için 5'i 4! ile çarptığınız, 4! hesaplamak için ise 4'ü 3! ile çarptığınız anlamına gelir ve bu böyle devam eder.

İşte özyinelemeli bir faktöriyel fonksiyonunun görünümü:

int factorial(int n) {
    if (n <= 1) {           // Temel durum: 0! ve 1! değerlerinin her ikisi de 1'e eşittir
        return 1;
    }
    
    return n * factorial(n - 1);  // Özyinelemeli adım: n! = n × (n-1)!
}

Taban durum, n 1 veya 0'a ulaştığında özyinelemeyi durdurur ve 1 değerini döndürür. Özyinelemeli adım, mevcut sayıyı bir sonraki küçük sayının faktöriyeli ile çarpar. factorial(4) fonksiyonunu çağırdığınızda, taban duruma ulaşana kadar ardışık çağrılar yaparak 4 × 3 × 2 × 1 işlemini hesaplar, ardından çağrılar geri döndükçe tüm sonuçları birbiriyle çarpar.

challenge icon

Görev

Kolay

Özyinelemeli bir faktöriyel işlevi uygulayan ve bunu farklı girdi değerlerinin faktöriyellerini hesaplamak için kullanan bir program oluştur. Bu görev, bir işlevin temel duruma ulaşana kadar değiştirilmiş parametrelerle kendisini çağırmasını sağlayarak özyinelemenin nasıl çalıştığına ilişkin anlayışını sınayacak.

Aşağıdaki girdi sağlanacaktır:

  • Faktöriyeli hesaplanacak sayıyı temsil eden bir tamsayı n

Programın şunları yapması gerekir:

  1. Bir tamsayı parametresi alan ve bir tamsayı döndüren factorial adlı özyinelemeli bir işlev oluştur
  2. İşlev, temel durumu uygulamalıdır: n 1'den küçük veya eşitse 1 döndür
  3. İşlev, özyinelemeli adımı uygulamalıdır: n ile n-1'in faktöriyelini çarpıp döndür
  4. Ana işlevde girdi değerini oku
  5. Girdi değeriyle factorial işlevini çağır
  6. Sonucu belirtilen biçimi kullanarak yazdır

Aşağıdaki tam çıktı biçimini kullan:

Factorial of [n] is [result]

factorial işlevinin her seferinde daha küçük bir değerle kendisini çağırması ve her özyinelemeli çağrıyla temel duruma yaklaşması gerektiğini unutma. Temel durum, n 1'e veya 0'a ulaştığında durarak sonsuz özyinelemeyi önler. Özyinelemeli adım, işlev çağrıları değerlerini döndürürken son sonucu oluşturarak mevcut sayıyı bir sonraki küçük sayının faktöriyeliyle çarpar.

Kendin dene

#include <iostream>
using namespace std;

// TODO: Faktöriyel fonksiyonunuzu buraya yazın

int main() {
    // Girdiyi oku
    int n;
    cin >> n;
    
    // TODO: Faktöriyel fonksiyonunu çağırın ve sonucu saklayın
    
    // Sonucu yazdır
    cout << "Factorial of " << n << " is " << result << endl;
    
    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.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C++ derleyicisi