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 suatu fungsi/prosedur yang bisa memanggil
prosedur/fungsi itu sendiri
Contoh rekursif :
Menampilkan hasil perulangan angka 5 dari 54321 :
#include <stdio.h>void ulangAngka (int batas) { if (batas >0) {
Contoh Program Pangkat :
#include <stdio.h> #include <stdlib.h> #include <conio.h>long int Pangkat(int X, int Y); int X,Y;
int main() {
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 <stdio.h>#include <stdlib.h> #include <conio.h> #include <string.h>
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.
#include <stdio.h> scanf("%d", &huruf);
segitigaPascal(huruf); printf("\n");
getch(); return 0; }
void segitigaPascal(int x) { int y;
for(y=1; y<=x;y++) {
printf("%d ", faktorial(x, y) ); }
}
int faktorial(int c, int k) { if ((k == 1) || (k == c)) {
sendiri, sampai k = 1 atau c=k.
Buat program dibawah ini dan lengkapi kode yang kosong.
#include <stdio.h>#include <stdib.h> #include <conio.h>
long int faktorial(int N) { if(N == 0) {
//Prosedur Untuk Memindahkan Sebuah tower Hanoi
tiangC); } }
//prosedur untuk ...(b)
void CariGheto (int A[10], int Awal, int Akhir, int Tengah, int Data_Cari, int Ketemu) {
If (Awal > Akhir) {
//prosedur input data dalam array A[10] void InputGheto (int A[10],int N) { for(int i=0;i<=10;i++) {
printf(" 4. Permutasi\n" );//kasus no 3a