Professional Documents
Culture Documents
STRUKTUR
REKURSIF
STRUKTUR REKURSIF
1
Contoh Fungsi Rekursif
a. Fungsi pangkat
b. Faktorial
c. Fibonancy
d. Menara Hanoi
Fungsi Pangkat
Menghitung 10 pangkat n dengan menggunakan konsep
rekursif.
Contoh :
10 3 = 10 * 10 2
10 2 = 10 * 10 1
10 1 = 10 * 10 0
10 0 = 1
2
Faktorial
0! = 1
N! = N x (N-1)! Untuk N > 0
Contoh :
FAKT(5) = 5 * FAKT(4)
FAKT(4) = 4 * FAKT(3)
FAKT(3) = 3 * FAKT(2)
FAKT(2) = 2 * FAKT(1)
FAKT(1) = 1 * FAKT(0)
Nilai Awal
Misal :
hitung 5!, maka dapat dilakukan secara rekursif
dgn cara :
5! = 5 * 4!
3
Contoh Listing Faktorial
#include <iostream.h>
#include <iomanip.h>
Unsigned long faktorial (unsigned long);
Int main()
{
for (int i=0; i:<=10; i++)
cout << setw(2) << i << “! Faktorial(i) << endl;
return 0;
}
// recursive definition of function factorial
Unsigned long factorial (unsigned long number)
{
if (number <=1) // base case
return 1;
else
return number * factorial(number – 1);
}
Fibonancy
Deret Fibonancy : 0,1,1,2,3,5,8,13,.........
Contoh :
Fibo(5) = Fibo(4) + Fibo(3)
Fibo(4) = Fibo(3) + Fibo(2)
Fibo(3) = Fibo(2) + Fibo(1)
Nilai Awal
4
Contoh Listing Fibonancy
#include <iostream.h>
Void a(void); void b(void); void c(void); // function prototype
Int x=1 ; // global variable
Int main()
{
int x=5; //local variable to main
cout << “local x in outer scope of main is” << x << endl;
{
int x=7;
cout << “local x in inner scope of main is” << x << endl;
}
cout << “local x in outer scope of main is” << x << endl;
a(); b(); c(); a(); b(); c();
cout << “local x in main is” << x << endl;
return 0;
}
Void a(void)
{
int x=25;
cout << endl << “local x in a is”<< x
<< “after entering a”<< endl;
++x;
cout << "local x in a is " << x
<< " before exiting a" << endl;
}
5
Konsep Menara Hanoi.
A B C
Tiang Asal Tiang Bantuan Tiang Tujuan
Menara (n,asal,bantu,tujuan)
6
Langkah Pemindahan Piringan
MENARA(1,A,C,B) ....... A B
MENARA(2,A,B,C) A C ......... A C
MENARA(1,B,A,C) ........B C
MENARA(3,A,C,B) A B .......................…………...................… A B
MENARA(1,C,B,A) .......C A
MENARA(2,C,A,B)C B ........................ C B
MENARA(1,A,C,B) ................ A B
MENARA A C ..........……..........................................................A C
(4,A,B,C) MENARA(1,B,A,C) ...... B C
MENARA(2,B,C,A) B A ........B A
MENARA(1,C,B,A) ....... C A
MENARA(3,B,A,C) B C ......................................... B C
MENARA(1,A,C,B) ........ A B
MENARA(2,A,B,C) A C ............... A C
MENARA(1,B,A,C) ........ B C
2N - 1
N = Jumlah Piringan