Membuat Program Faktorial Menggunakan Bahasa Pemrograman C++
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:
- Konsep faktorial.
- Cara membuat program faktorial menggunakan looping.
- Cara membuat program faktorial menggunakan rekursif.
- 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
- Input User: Program meminta user memasukkan bilangan yang ingin dihitung faktorialnya.
- Validasi Input: Jika user memasukkan bilangan negatif, program akan menampilkan pesan error.
- Perulangan: Menggunakan for loop untuk menghitung faktorial dengan cara mengalikan angka dari 1 hingga n.
- 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
- Fungsi Rekursif:
- Base Case: Ketika
n == 0
ataun == 1
, kembalikan nilai 1. - Recursive Case: Hitung faktorial dengan memanggil fungsi
faktorial(n - 1)
.
- Base Case: Ketika
- 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.