Online C Compiler
Buka di kompiler

Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.

Faktorial dalam C

Hitung hasil kali dari 1 hingga N sambil memeriksa rentang tipe angka.

Buka di kompiler

Faktorial dalam C
Hitung hasil kali dari 1 hingga N sambil memeriksa rentang tipe angka.

Untuk bilangan bulat nonnegatif N, N! adalah hasil kali bilangan dari 1 hingga N; berdasarkan definisi, 0! = 1. Mulai akumulator dari satu dan kalikan setiap faktor, atau gunakan rekursi dengan kasus dasar.

Faktorial tumbuh dengan cepat. Sebelum perkalian, periksa nilai maksimum tipe: beralih ke long long tidak menghilangkan batas. Overflow bilangan bulat bertanda tidak menghasilkan jawaban yang valid.

Uji N = 0, N = 1, dan nilai terbesar yang didukung. Versi iteratif menggunakan waktu O(N) dan ruang tambahan O(1).

Kode C

#include <stdio.h>

unsigned long long calculate_factorial_iterative(int n) {
    if (n < 0) return 0;
    unsigned long long fact = 1;
    for (int i = 1; i <= n; i++) {
        fact *= (unsigned long long)i;
    }
    return fact;
}

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

int main(void) {
    int numbers[] = {0, 1, 5, 7, 10, 12};
    int count = sizeof(numbers) / sizeof(numbers[0]);

    printf("--- C Factorial Computation Summary ---\n");
    for (int i = 0; i < count; i++) {
        int val = numbers[i];
        printf("%2d! = %-12llu (Recursive: %llu)\n",
               val,
               calculate_factorial_iterative(val),
               calculate_factorial_recursive(val));
    }

    return 0;
}
Buka di kompiler

Keluaran yang diharapkan

--- C Factorial Computation Summary ---
 0! = 1            (Recursive: 1)
 1! = 1            (Recursive: 1)
 5! = 120          (Recursive: 120)
 7! = 5040         (Recursive: 5040)
10! = 3628800      (Recursive: 3628800)
12! = 479001600    (Recursive: 479001600)

Pertanyaan umum

Mengapa kode dan keluarannya tetap dalam bahasa Inggris?

Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.