REKURSIF (ALGORITMA PEMOGRAMAN)
Rekursif merupakan salah satu
metode algoritma yang kerap digunakan dalam membuat perulangan, seperti halnya
iterasi for, repeat .. until, do.. while, dsb. Perbedaannya adalah dalam
sifatnya yang memanggil dirinya sendiri, baik secara langsung ataupun melalui
metode yang lainnya. Ciri masalah yang dapat diselesaikan secara rekursif
adalah masalah itu dapat direduksi menjadi satu atau lebih masalah-masalah
serupa yang lebih kecil. Dalam
pemrograman rekursif, terdapat dua istilah penting yaitu Basis dan Rekurans. Basis adalah
suatu keadaan yang terdefinisi yang akan menghentikan kondisi rekursif,
sementara rekurans adalah sebuah
Berikut adalah beberapa contoh kasus pemrograman yang
menggunakan algoritma rekursi, yakni menhitung jumlah digit suatu bilangan,
jumlah deret bilangan bulat positif dan jumlah deret bilangan genap positif
dengan menggunakan bahasa C :
include
<stdio.h>
//menghitung
jumlah digit suatu bilangan ex. 234 == 9
int digit(n){
if (n < 10)
return n;
else return (n
% 10) + digit(n / 10);
}
//menghitung
jumlah deret S(n) = 1 + 2 + 3 + 4 + .... +
n
int deret1(n){
if (n == 1)
return 1;
else return deret1(n
- 1) + n;
}
//menghitung
jumlah deret genap S(n) = 2 + 4 + 6 + 8 + .... +
(2 * n)
int deret2(n){
if (n == 1)
return 2;
else return deret2(n
- 1) + (2*n);
}
int main(){
printf("Penjumlahan
digit dengan n = 678 : %d\n",digit(678));
printf("Penjumlahan
deret bilangan dengan n = 8 : %d\n",deret1(8));
printf("Penjumlahan
deret genap dengan n = 5 : %d",deret2(5));
return 0;
}
#include<iostream.h>
#include<conio.h>
using namespace std;
class rekrusif{
private :
int x,y;
public:
long pangkat(int x,int y);
int proses(){
cout<<" program untuk memangkatkan dengan menggunakan rekrusi"<<endl;
cout<<"x : ";
cin>>x;
cout<<"y : ";
cin>>y;
cout<<x<<" ^ "<<y<<" = "
<<pangkat(x,y)<<endl;
system("pause");
}};
long rekrusif::pangkat(int x,int n)
{
if (n==1)
return(x);
else
return(x * pangkat(x,n-1));//pemanggilan kembali fungsi pangkat dengan n-1
}
int main(){
rekrusif a;
a.proses();
return 0;
}
#include<conio.h>
using namespace std;
class rekrusif{
private :
int x,y;
public:
long pangkat(int x,int y);
int proses(){
cout<<" program untuk memangkatkan dengan menggunakan rekrusi"<<endl;
cout<<"x : ";
cin>>x;
cout<<"y : ";
cin>>y;
cout<<x<<" ^ "<<y<<" = "
<<pangkat(x,y)<<endl;
system("pause");
}};
long rekrusif::pangkat(int x,int n)
{
if (n==1)
return(x);
else
return(x * pangkat(x,n-1));//pemanggilan kembali fungsi pangkat dengan n-1
}
int main(){
rekrusif a;
a.proses();
return 0;
}
Rekursif dalam bahasa C++
contoh :
3!=3.(3-1)!
3!=3.2! --> Faktorial n-1
3!=3.2.(2-1)!
3!=3.2.1! --> Faktorial n-2
3!=3.2.1
- See more at: http://aina-tunk.blogspot.com/2012/06/program-rekursif-faktorial-pada-c.html#sthash.ZyUjCCLZ.dpuf
contoh :
3!=3.(3-1)!
3!=3.2! --> Faktorial n-1
3!=3.2.(2-1)!
3!=3.2.1! --> Faktorial n-2
3!=3.2.1
Program Faktorial :
- See more at: http://aina-tunk.blogspot.com/2012/06/program-rekursif-faktorial-pada-c.html#sthash.ZyUjCCLZ.dpuf
REFERENSI
1. http://efilistianidewi.wordpress.com/2012/04/13/rekursif-dan-iteratif/
2. http://wanz-91.blogspot.com/2011/12/fungsi-rekursif.html
Tidak ada komentar:
Posting Komentar