PERTEMUAN KE 12
REKURSIF
Rekursif Bahasa Pemrorgraman
Langkah ke:
Rekursif (3,3) 1 a=4 ; b=2 . Cetak : masuk a=4 || b=2
1 6 2 a=5 ; b=1 . Cetak : masuk a=5 || b=1
Rekursif (4,2) 3 a=6 ; b=0 . Cetak : masuk a=6 || b=0
2 5 4 a=6 ; b=0 . Cetak : keluar a=6 || b=0
Rekursif (5,1) 5 a=5 ; b=1 . Cetak : keluar a=5 || b=1
3 4 6 a=4 ; b=2 . Cetak : keluar a=4 || b=2
Rekursif (6,0)
fibonacci(i 1) fibobacci(i 2) , i 2
fibonacci(i)
1 , i 1,2
Rekursif Bahasa Pemrorgraman
Rekursif Bahasa Pemrorgraman
4! = 4 x 3! 6
3! = 3 x 2! 2
2! = 2 x 1! 1
1! = 1 x 0! 1
0! = 1
Menara A B C :
a b c
Rekursif Bahasa Pemrorgraman
Program 10.2
include <stdio.h>
void Hanoi(int n,char asal,char bantu, char tujuan)
// pindahkan piringan ke n
{ // dari asal menuju tujuan
// melalui bantu
if (n == 0) return;
Hanoi(n‐1,asal,tujuan,bantu); // pindahkan piringan ke n‐1
// dari asal ke bantu melalui
// tonggak tujuan
printf("Pindah piring ke %d ke dari %c ke %c\n",n,asal,tujuan);
Hanoi(n‐1,bantu,asal,tujuan) // pindahkan piringan ke n ‐ 1
// dari bantu menuju tujuan
// melalu asal
}
int main(void)
{
int n;
printf("Jumlah piringan ? ");
scanf("%d",&n);
Hanoi(n,'a','b','c');
return 0;
}
Rekursif Bahasa Pemrorgraman
Faktorial(4)
4 x Faktorial(3)
3 x Faktorial(2)
2 x Faktorial(1)
1 x Faktorial(0)
1
Dalam hal ini memang untuk rekursif harus memakai function karena
procedure tidak dapat dipanggil di dalam procedure itu sendiri.
Rekursif Bahasa Pemrorgraman
using namespace std;
float Pangkat(float a, int n)
{
if (n==0)
return 1;
else
return a * Pangkat(a, n‐1);
}
int main(int argc, char *argv[])
{
float a;
int n;
cout<<"Program Pangkat Rekursif\n";
cout<<"Isilah Nilai a = ";
cin>>a;
cout<<"Isilah Nilai n = ";
cin>>n;
cout<<"Hasil dari "<<a<<" pangkat "<<n<<" adalah "<<Pangkat(a,n)<<"\n";
system("PAUSE");
return EXIT_SUCCESS;
}
}
int main(int argc, char *argv[])
{
int n;
cout<<"Program Jumlah Integer\n";
cout<<"Masukkan Nilai n = ";
cin>>n;
cout<<"Jumlah bilangan Integer dari 1 sampai "<<n<<" = "<<JumlahInt(n)<<"\n";
system("PAUSE");
return EXIT_SUCCESS;
}
Rekursif Bahasa Pemrorgraman
int n;
cout<<"Program Faktorial Iteratif\n";
cout<<"Masukkan Nilai n : ";
cin>>n;
cout<<"Faktorial("<<n<<") = "<<Faktorial(n)<<"\n";
system("PAUSE");
return EXIT_SUCCESS;
}
return EXIT_SUCCESS;
}
Rekursif Bahasa Pemrorgraman
Iteratif. Apakah semua problem bisa Integer Positif bisa juga diselesaikan
dipecahkan secara Teknik Rekursif ? dengan rumus : n x (n + 1) / 2 atau
Ternyata tidak semuanya. Apakah (n2 + n) / 2 jadi tidak perlu Iteratif.
juga harus diselesaikan secara Perhatikan beberapa kasus
Teknik Iteratif ? Ternyata juga tidak. berikut ini pun dapat diselesaikan
Sebagai contoh Jumlah Bilangan dengan rekursif:
tidak mencetak apa‐apa
Rekursif : n>0
gambar piramid dengan tinggi (n‐1) mulai kolom (k+1)
cetak karakter ’ ’ sebanyak k
cetak karakter ’*’ sebanyak 2n – 1