Dalam matematika, faktorial dari bilangan asli n adalah
hasil perkalian antara bilangan bulat positif yang kurang dari atau sama
dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial.
Sebagai contoh, nilai dari 7 faktorial adalah 7*6*5*4*3*2*1=
5040. Berikut merupakan contoh program untuk mencari bilangan faktorial dengan metode rekursif.
#include <iostream>
using namespace std;
int factorial(int);
int main()
{
int r;
cout<<"masukkan bilangan bulat positif: ";
cin>>r;
if (r<0)
cout<<"bukan bilangan bulat";
else
cout<<r<<" faktorial adalah: "<<factorial(r)<<endl;
system ("pause");
return 0;
}
int factorial(int r) // fungsi faktorial rekursif
{
int result;
if (r<=1)return 1;
result=r*factorial(r-1);
return result;
}
Rekursi adalah suatu proses dari
fungsi yang memanggil dirinya sendiri. Disebut juga dengan fungsi rekursif.
Dalam sebuah fungsi rekursif pemanggilan dapat terjadi berulang kali hingga ada
suatu kondisi yang mengakhiri prosesya.
Pada contoh progam C++ diatas kondisi penghentiannya adalah jika r
lebih kecil atau sama dengan 1. Setiap kali fungsi memeanggil dirinya sendiri,
nilai dari r dikurangi 1 sehingga nilai r akhirnya menjadi 1 dan proses rekursi
akan diakhiri, sehingga fungsi ini akan memanggil dirinya sendiri sebanyak r
kali.
Misalkan pada program C++ diatas
kita masukan bilangan positif 4 maka proses rekursi yang pertama adalah: result(4*factorial(3)); proses ini akan
memanggil kembali fungsi dirinya sendiri dengan mengirimkan nilai 3 sebagai
nilai r yang baru. Karena nilai r masih lebih besar dari 1 maka proses rekursi
kedua akan dilakukan dengan hasilnya adalah: 3*factorial(2) hingga seterusnya sampai nilai r sama dengan 1.
Untuk nilai r sama dengan 1, perintah return (1) akan mengembalikan proses ke
bagian yang memanggilnya.
Kekurangan dari fungsi rekursif:
-
Memerlukan lebih banyak memori
untuk menyimpan activation record dan variable local.
-
Memerlukan waktu yang lebih
banyak untuk menangani activation record.
Tidak ada komentar:
Posting Komentar