You are on page 1of 7

REKURSIF

REKURSIF ITERATIF
Perulangan rekursif merupakan
saah satu metode ddaam
pemrograman yang mana daam
sebuah fungs terdapat ntruks yang
memangg fungs tu sendr, atau
ebh serng dsebut memangg
drnya sendr.
Perulangan iteratif merupakan
peruangan yang meakukan proses
peruangan terhadap sekeompok ntruks.
Peruangan dakukan daam batasan syarat
tertentu. Ketka syarat tersebut tdak
terpenuh ag maka peruangan aka
terhent.
Keebhan peruangan rekursf
Sangat mudah untuk meakukan
peruangan dengan batasan yang
uas daam artan meakukan
peruangan daam skaa yang besar
Dapat meakukan peruangan dengan
batasan fungs
Keebhan peruangan teratf
Mudah dpaham dan mudah dakukan
debugng ketka ada peruangan yang saah
Dapat meakukan nested oop atau yang
dsebut dengan oopng bersarang
Proses ebh sngkat karena peruangan
ter|ad pada konds yang teah dsesuakan
|arang ter|ad overow karena batasan dan
syarat peruangan yang |eas
Kekurangan peruangan rekursf
Tdak bsa meakukan nested oop
atau oopng bersarang
Basanya membuat fungs sut untuk
dpaham, hanya cocok untuk
persoaan tertentu sa|a
Memerukan stack yang ebh besar,
sebab setap ka fungs dpangg,
varabe oka dan parameter forma
akan dtempatkan ke stack dan ada
kaaya akan menyebabkan stack tak
cukup ag (Stack Overum)
Proses agak berbet-bet karena
terdapat pemangan fungs yang
beruang-uang dan pemanggan
data yang dtumpuk
Keemahan peruangan teratve
Tdak dapat menggunakan batasan berupa
fungs
Peruangan dengan batasan yang uas akan
menyutkan daam pembuatan program
peruangan tu sendr
Perbedaan dan Persamaan Rekursf dan Iteratf :
Persamaan
- Sama-sama merupakan bentuk peruangan.
- Dakukan pengecekan konds terebh dahuu sebeum menguang.
Perbedaan
- Iteratf menggunakan FOR, WHILE, DO-WHILE sedangkan rekursf hanya
menggunakan IF.
- Iteratf dapat ber|aan pada program yang terdr dar prosedur (Tdak terdapat
fungs) sedangkan rekursf merupakan fungs.
Prestest:
Versi 1
1. Apa perbedaan fungs Rekursf dengan Fungs Iteratf?
2. Buat agortma untuk menghtung deret S = 2+4+6+8+10+...+2n
menggunakan functon rekurs
3. Buatah fungs program untuk menghtung faktora dengan menggunakan
fungs rekursf dan fungs basa(teratf)
|awaban:
2 Deret
Functon S(nput n:nteger) nteger
Deskrps
If (n==1) Then
return (2)
Ese
return (2*n + S(n-1))
Endf
Fakt!rial rekursif
nt Faktora(nt n)
{
f ((n == 0) || (n == 1 ))
return (1);
ese
return (n * Faktora(n-1));
}
Fakt!rial iteratif
nt fact_t (nt n)
{
nt temp;
temp = 1;
f (n < 0)
return 0;
ese f (n == 0)
return 1;
ese f (n == 1)
return 1;
ese
for (nt =2; <=n; ++)
temp = temp * ;
return (temp);
}
Versi 2
1. Apa perbedaan fungs Rekursf dengan Fungs Iteratf?
2. Buat agortma untuk menghtung deret S = 1+2+3+4+5+...+n
menggunakan functon rekurs
3. Buatah fungs program dengan menggunakan fungs basa(teratf) dan
fungs rekursf untuk menampkan |umah na bonacc
|awaban:
2" Deret
Functon S(nput n:nteger) nteger
Deskrps
If (n==1) Then
return (1)
Ese
return (n + S(n-1))
Endf
" Fib!na##i rekursif
nt bonacc(nt n){
f((n==1)||(n==2)){return 1;}
ese {
return (bonacc(n-1)+bonacc(n-2));
}
}
Fib!na##i iteratif
nt bonacc(nt n)
{
nt u = 0;
nt v = 1;
nt , t;
for(nt = 2; <= n; ++)
{
t = u + v;
u = v;
v = t;
}
return v;
}
P!stest:
1. Buatah program daam bentuk cass yang mempunya bentuk rekursf
untuk menghtung dengan rumus fungs :
a. permutas
b. kombnas
Gunakan fungs rekursf faktora!
2. Buatah program untuk menampkan deret bonacc dan |umah na
bonacc daam bentuk rekursf, buat dengan cass!
Fakt!rial rekursif
nt Faktora(nt n)
{
f ((n == 0) || (n == 1 ))
return (1);
ese
return (n * Faktora(n-1));
}
Alg!ritma K!mbinasi
Functon Kombnas (nput n, r : nteger) rea
Deskrps
If (n < r) Then
return (0)
Ese
return (Faktora(n)/Faktora(r)*Faktora(n-r))
Endf
Alg!ritma Permutasi
Functon Permutas (nput n, r : nteger) rea
Deskrps
If (n< r) Then
return (0)
Ese
return (Faktora(n) / Faktora(n-r))
Endf
1" Permutasi dan K!mbinasi
#ncude <cstdb>
#ncude <ostream>
usng namespace std;
cass soa1{
pubc:
soa1();
nt faktora(nt);
nt kombnas(nt,nt);
nt permutas(nt,nt);
prvate:
nt n,r;
};
soa1::soa1(){
cout<<"na n:";cn>>n;
cout<<"na r:";cn>>r;

cout<<"Kombnas : "<<kombnas(n,r);
cout<<end<<"Permutas : "<<permutas(n,r);
}
nt soa1::faktora(nt n)
{
f ((n == 0) || (n == 1 ))
return (1);
ese
return (n * faktora(n-1));
}
nt soa1::kombnas(nt n,nt r){
f(n<r){return 0;}
ese return (faktora(n)/faktora(r)*faktora(n-r));
}
nt soa1::permutas(nt n, nt r){
f(n<r){return 0;}
ese return (faktora(n) / faktora(n-r));
}
nt man(nt argc, char** argv) {
soa1 a;

return 0;
}
2" Deret Fib!na##i dan $umla% nilai
#ncude <cstdb>
#ncude <ostream>
usng namespace std;
cass soa2{
pubc:
soa2();
nt bonacc(nt);
nt deret();
prvate:
nt f;
};
soa2::soa2(){
cout<<"masukkan batas suku deret :";
cn>>f;
}
nt soa2::bonacc(nt n){
f((n==1)||(n==2)){return 1;}
ese {
return (bonacc(n-1)+bonacc(n-2));

}
}
nt soa2::deret(){
for(nt =1;<=f;++){
cout<<bonacc()<<" ";
}
cout<<end<<"|umah na bonacc dar "<<f<<" :"<<bonacc(f);
}
nt man(nt argc, char** argv) {
soa2 a;
a.deret();

return 0;
}

You might also like