Wilis Kaswidjanti
Informatika UPN “Veteran” Yk
2007
wilis k - IFUPN"V"Yk
Algoritma dan Pemrograman I
REKURSIF
Faktorial
• Fungsi factorial dari bilangan bulat positif n
didefinisikan sebagai berikut:
n!= n.(n-1)! , jika n>1
n!= 1 , jika n=0, 1
• contoh :
3!= 3. 2!
3!= 3. 2. 1!
3!= 3. 2. 1
3!= 6
wilis k - IFUPN"V"Yk
Algoritma dan Pemrograman I
Kita dapat menuliskan fungsi penghitung factorial
seperti dibawah ini
1. int Faktorial(int n)
2. {
3. if ((n == 0) || (n == 1 ))
4. return (1);
5. else
6. return (n * Faktorial(n-1));
7. }
• Pada baris 3 dari fungsi diatas,
nilai n dicek sama dengan 0 atau 1,
jika ya, maka fungsi mengembalikan nilai 1 { baris 4},
jika tidak, fungsi mengembalikan nilai n * Faktorial (n -1)
{baris 6}
• disinilah letak proses rekursif itu, perhatikan fungsi
factorial ini memanggil dirinya sendiri tetapi dengan
parameter (n-1) wilis k - IFUPN"V"Yk
Algoritma dan Pemrograman I
Bilangan Fibonacci
wilis k - IFUPN"V"Yk
Algoritma dan Pemrograman I
Contoh
wilis k - IFUPN"V"Yk
Algoritma dan Pemrograman I
Kombinasi
Function Kombinasi (input n, r : integer) real
Deklarasi
If (n < r) Then
return (0)
Else
return (Faktorial(n)/Faktorial(r)*Faktorial(n-r))
Endif
wilis k - IFUPN"V"Yk
Algoritma dan Pemrograman I
Permutasi
Function Permutasi (input n, r : integer) real
Deklarasi
{tidak ada}
Deskripsi
If (n< r) Then
return (0)
Else
return (Faktorial(n) / Faktorial(n-r))
Endif
wilis k - IFUPN"V"Yk
Algoritma dan Pemrograman I
Latihan
1. Buat program untuk menghitung deret
S = 1+2+3+4+5+...+n menggunakan
function rekursi
2. Buat program untuk menghitung deret
S = 2+4+6+8+10+...+2n menggunakan
function rekursi
wilis k - IFUPN"V"Yk
No.1 deret S=1+2+3+4+5+…+n
Function S(input n:integer) integer
Deklarasi Lokal
{tidak ada}
Deskripsi
If (n==1) Then
return (l)
Else
return (n + S(n-1))
Endif
wilis k - IFUPN"V"Yk
No.2 deret S=2+4+6+8+10+…+2n
Function S(input n:integer) integer
Deklarasi Lokal
{tidak ada}
Deskripsi
If (n==1) Then
return (2)
Else
return (2*n + S(n-1))
Endif
wilis k - IFUPN"V"Yk
No. 1 dalam bhs C++ (lengkap)
#include<iostream.h>
int S(int n);
main()
{
int n;
cout << “Masukkan n = “; cin >> n;
cout << “Deret S=1+2+3+4+5+...+n \n”;
cout << “Jumlah deret S = “ << S(n);
}
int S(int n)
{
if (n == 1)
return (1);
else
return (n + S(n-1));
}
wilis k - IFUPN"V"Yk