REKURSIF Dalam ilmu komputer id

REKURSIF
Dalam ilmu komputer, kelas dari objek atau metode memperlihatkan perilaku
rekursif bila mereka dapat didefinisikan oleh dua properti berikut :
1. Sebuah (beberapa) kasus dasar sederhana
2. Sejumlah aturan yang mengurangi kasus lain sampai ke kasus dasar
Sebagi contoh, berikut ini definisi rekursif dari leluhur seseorang



Orang tua seseorang adalah leluhur seseorang (kasus dasar)
Orang tua dari suatu leluhur merupakan leluhurnya (langkah rekursif)

Bilangan fibonnaci adalah contoh lainnya




Fib(0) adalah 0 (kasus dasar)
Fib(1) adalah 1 (kasus dasar)
Untuk semua integer n>1, fib(n) = fib(n-1) + fib(n-2) langkah rekursif)


Rekursif intinya adalah
prosedur/fungsi itu sendiri

suatu

fungsi/prosedur

yang

bisa

memanggil

Contoh rekursif :
Menampilkan hasil perulangan angka 5 dari 54321 :
#include
int main() {
int i;
int batas = 5;
for(i = batas; i>0; i--)

{
printf("%d", i);
}
return 0;
}

#include
void ulangAngka (int batas) {
if (batas >0) {
printf("%d", batas);
ulangAngka(batas-1);
}
}
int main() {
ulangAngka(5);
return 0;
}

Contoh Program Pangkat :
#include

#include
#include
long int Pangkat(int X, int Y);
int X,Y;
int main() {
printf("Masukkan X :");
scanf("%d", &X);

ALGORITMA DAN STRUKTUR DATA | 20

printf("Masukkan Y :");
scanf("%d", &Y);
printf("%d pangkat %d = %ld\n", X, Y, Pangkat(X,Y));
getch();
system("pause");
return 0;
}
long int Pangkat(int X, int Y) {
if(Y==0) {
return 1;

} else {
return X*Pangkat(X,--Y);
}
};

Latihan Soal
Buat program untuk mencari permutasi suatu kata
#include
#include
#include
#include
long int faktorial(int );
int main() {
char kata[20];
printf("Masukkan Kata");
scanf("%s", kata);
printf("Jumlah Permutasi %s = %ld\n\n", kata,
faktorial(strlen(kata)));
}
long int faktorial(int x) {

return (x == 1) ? 1 : (x*faktorial(x-1));
}

Program diatas ada sebuah kesalahan. Jika kita mengisikan kalimat dan ada
karakter yang sama, maka program akan membacanya sebagai dua kalimat
berbeda.
Buat program membuat segitiga Pascal dengan syarat c(n,k = 1) = 1, c(n,k=n) = 1,
dan c(n,k=x) = c(n-1, x) + c(n-1, x-1);

ALGORITMA DAN STRUKTUR DATA | 21

#include
void segitigaPascal(int);
int faktorial(int, int);
int main() {
int huruf;
printf("Masukkan Angka : ");
scanf("%d", &huruf);
segitigaPascal(huruf);
printf("\n");

getch();
return 0;
}
void segitigaPascal(int x) {
int y;
for(y=1; y0) {
towerHanoi(cakramGerak, cakramKe-1, tiangA, tiangC,
tiangB);
cakramGerak++;
printf("Pindahkan cakram nomor %d dari Tiang %c ke Tiang
%c [%c --> %c", cakramKe, tiangA, tiangC, tiangA, tiangC);
towerHanoi(cakramGerak, cakramKe-1, tiangB, tiangA,

ALGORITMA DAN STRUKTUR DATA | 22

tiangC);
}
}
//prosedur untuk ........................(b)
void CariGheto (int A[10], int Awal, int Akhir, int Tengah, int

Data_Cari, int Ketemu) {
If (Awal > Akhir) {
ketemu := 0; }
else {
Tengah := (Awal + Akhir) div 2;
if (Data_Cari < A[Tengah]) {
CariGheto (A, Awal, Tengah – 1, Tengah, ketemu);
} else if (Data > A[Tengah]) {
CariGheto (A, Tengah + 1, Akhir, Tengah, ketemu);
} else {
ketemu = 1;
}
}
//prosedur input data dalam array A[10]
void InputGheto (int A[10],int N) {
for(int i=0;i