Membuat Program Faktorial Menggunakan Bahasa Pemrograman C++

Membuat Program Faktorial Menggunakan Bahasa Pemrograman C++
Photo by Dan Cristian Pădureț / Unsplash

Faktorial adalah salah satu konsep matematika yang sering digunakan dalam pemrograman, terutama untuk menyelesaikan masalah yang melibatkan kombinatorika, permutasi, atau algoritma tertentu. Faktorial dari sebuah bilangan bulat positif n (ditulis sebagai n!) adalah hasil perkalian semua bilangan bulat positif dari 1 hingga n.

Pada artikel ini, kita akan membahas:

  1. Konsep faktorial.
  2. Cara membuat program faktorial menggunakan looping.
  3. Cara membuat program faktorial menggunakan rekursif.
  4. Penjelasan kode program.

Apa Itu Faktorial?

Faktorial dari sebuah bilangan n adalah hasil perkalian semua bilangan bulat positif dari 1 hingga n.
Misalnya:

  • 5! = 5 × 4 × 3 × 2 × 1 = 120
  • 4! = 4 × 3 × 2 × 1 = 24
  • 0! = 1 (nilai khusus yang didefinisikan dalam matematika)

1. Program Faktorial Menggunakan Looping

Pendekatan: Gunakan perulangan (loop) untuk menghitung faktorial dengan cara mengalikan bilangan secara berulang dari 1 hingga n.

Kode Program

#include <iostream>
using namespace std;

int main() {
    int n;
    long long faktorial = 1; // Variabel untuk menyimpan hasil faktorial

    // Meminta input dari user
    cout << "Masukkan bilangan: ";
    cin >> n;

    // Validasi input (faktorial hanya untuk bilangan non-negatif)
    if (n < 0) {
        cout << "Faktorial tidak terdefinisi untuk bilangan negatif." << endl;
    } else {
        // Menghitung faktorial menggunakan loop
        for (int i = 1; i <= n; i++) {
            faktorial *= i;
        }
        // Menampilkan hasil
        cout << "Faktorial dari " << n << " adalah: " << faktorial << endl;
    }

    return 0;
}

Penjelasan Kode

  1. Input User: Program meminta user memasukkan bilangan yang ingin dihitung faktorialnya.
  2. Validasi Input: Jika user memasukkan bilangan negatif, program akan menampilkan pesan error.
  3. Perulangan: Menggunakan for loop untuk menghitung faktorial dengan cara mengalikan angka dari 1 hingga n.
  4. Output: Menampilkan hasil faktorial ke layar.

Contoh Output

Input:

Masukkan bilangan: 5

Output:

Faktorial dari 5 adalah: 120

2. Program Faktorial Menggunakan Rekursif

Pendekatan: Gunakan fungsi rekursif, di mana fungsi memanggil dirinya sendiri hingga mencapai base case.

Kode Program

#include <iostream>
using namespace std;

// Fungsi Rekursif untuk Menghitung Faktorial
long long faktorial(int n) {
    if (n == 0 || n == 1) {
        return 1; // Base Case
    } else {
        return n * faktorial(n - 1); // Recursive Case
    }
}

int main() {
    int n;

    // Meminta input dari user
    cout << "Masukkan bilangan: ";
    cin >> n;

    // Validasi input
    if (n < 0) {
        cout << "Faktorial tidak terdefinisi untuk bilangan negatif." << endl;
    } else {
        // Pemanggilan fungsi rekursif
        cout << "Faktorial dari " << n << " adalah: " << faktorial(n) << endl;
    }

    return 0;
}

Penjelasan Kode

  1. Fungsi Rekursif:
    • Base Case: Ketika n == 0 atau n == 1, kembalikan nilai 1.
    • Recursive Case: Hitung faktorial dengan memanggil fungsi faktorial(n - 1).
  2. Pemanggilan Fungsi: Fungsi rekursif dipanggil dalam fungsi main(), dan hasilnya ditampilkan ke layar.

Contoh Output

Input:

Masukkan bilangan: 5

Output:

Faktorial dari 5 adalah: 120

Perbandingan Looping vs Rekursif

Aspek Looping Rekursif
Kinerja Lebih efisien, tidak memerlukan stack tambahan. Memerlukan stack untuk setiap pemanggilan fungsi.
Kegunaan Cocok untuk masalah sederhana. Cocok untuk masalah yang memiliki pola berulang.
Kelebihan Mudah dipahami dan di-debug. Kode lebih pendek dan elegan.
Kekurangan Bisa lebih panjang untuk masalah kompleks. Risiko stack overflow untuk input besar.

3. Program Faktorial dengan Menggunakan Fungsi dan Looping

Jika kamu ingin menggabungkan fungsi dengan pendekatan looping, berikut adalah contohnya.

Kode Program

#include <iostream>
using namespace std;

// Fungsi untuk Menghitung Faktorial Menggunakan Loop
long long faktorial(int n) {
    long long hasil = 1;
    for (int i = 1; i <= n; i++) {
        hasil *= i;
    }
    return hasil;
}

int main() {
    int n;

    // Meminta input dari user
    cout << "Masukkan bilangan: ";
    cin >> n;

    // Validasi input
    if (n < 0) {
        cout << "Faktorial tidak terdefinisi untuk bilangan negatif." << endl;
    } else {
        // Pemanggilan fungsi
        cout << "Faktorial dari " << n << " adalah: " << faktorial(n) << endl;
    }

    return 0;
}

Output

Input:

Masukkan bilangan: 7

Output:

Faktorial dari 7 adalah: 5040

Kesimpulan

Menghitung faktorial adalah salah satu latihan dasar yang penting untuk memahami logika perulangan dan rekursif dalam pemrograman. Pendekatan looping lebih efisien untuk input besar, sedangkan rekursif memberikan solusi yang lebih elegan dan modular. Kamu juga bisa menggabungkan fungsi dengan loop untuk membuat kode yang lebih terstruktur.

Read more