Jumat, 08 Juli 2011

Program c++ untuk mencari faktorial

#include<iostream> using namespace std;
float factorial(float n)
{

if(n>1)
return n*factorial(n-1);
else
return 1;
}
main()
{

float fac,n;
cout<<"\nMasukkan sebuah angka:\n ";
cin>>n;
cout<<"Faktorialdari "<<n<<" adalah "<<factorial(n)<<endl; }


Program diatas hanya terdiri dari 2 fungsi:
- factorial(float n)
- main()

Fungsi factorial(float n) hanya terdiri dari 4 baris yang sangat pendek. Namun untuk memahaminya, kita perlu memahami fungsi rekursif.

Pada baris pertama statement fungsi, diperiksa apakah n lebih besar dari 1. Jika ya, maka fungsi factorial akan memangil dirinya sendiri dengan argumen n-1. Hal ini akan dilakukan secara terus menerus selama n lebih besar dari 1. Setelah n mencapai 1, maka kondisi if(n>1) ini bernilai salah dan fungsi factorial memberikan return value 1 (tidak memanggil dirinya sendiri lagi).

Untuk lebih jelasnya kita lihat contoh berikut:
misalkan kita masukkan n=3 pada fungsi factorial, sehingga

factorial(3) = 3*factorial(2)......................................(1)
factorial(2) = 2*factorial(1).......................................(2)
factorial(1) = 1..........................................................(3)

Dengan mensubtitusi factorial(1) pada persamaan (2) ke persamaan (3) kita dapatkan:

factorial(2) = 2*1

Dengan mensubtitusi factorial(2) pada persamaan (2) ke persamaan (1) kita dapatkan:

factorial(3) = 3*2*1

Oleh karena itu kondisi (n>1) juga disebut stop condition pada fungsi rekursif karena setelah n=1 fungsi factorial tidak lagi rekursif dan memberikan return value tertentu.

Tidak ada komentar:

Posting Komentar