Definisi tentang Rekursif dan Iterasi
Rekursif adalah fungsi yang memanggil dirinya sendiri secara langsung ataupun tidak, dan proses pemanggilannya itu disebut rekursi.
Prinsif dan proses rekursi:
· Memiliki kasus non rekursi(sederhana)
· Kasus awal diarahkan menuju kasus sederhana
· Mendefinisikan proses rekursi
Bentuk rekursif :
· Suatu subrutin/fungsi/ prosedur yang memanggil dirinya sendiri.
· Bentuk dimana pemanggilan subrutin terdapat dalam body subrutin
· Dengan rekursi, program akan lebih mudah dilihat
Kelebihan perulangan rekursif:
· Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar
· Dapat melakukan perulangan dengan batasan fungsi
Kekurangan perulangan rekursif:
· Tidak bisa melakukan nested loop atau looping bersarang.
· Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
· Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum).
· Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk
Iterasi adalah sifat tertentu darialgoritma atau program komputer di mana suatu urutan atau lebih dari langkah algoritmik dilakukan di loop program, dapat juga diartikan sebagai suatu proses atau metode yang digunakan secara berulang-ulang (pengulangan) dalam menyelesaikan suatu permasalahan matematik.
Kelebihan Iterasi :
· Dapat mengakomodasi jika terjadi perubahan pada tahapan pengembangan yang telah dilaksanakan.
· Dapat disesuaikan agar system bisa dipakai selama hidup software computer.
· Cocok untuk pengembangan sistem dan perangkat lunak skala besar.
· Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tahapan karena system terus bekerja selama proses.
Kekurangan Iterasi :
· Hanya berlaku untuk Short-Lifetime system.
· Tahapan proses tidak terlihat sedang berada ditahapan mana suatu pekerjaan.
· Memerlukan alat ukur kemajuan secara regular.
· Perubahan yang sering terjadi dapat merubah struktur system.
· Memerlukan tenaga ahli dengan kemampuan tinggi.
Perbedaan dari Rekursif dan Iterasi
Rekursif :
· Kode program lebih ringkas dan mudah dipahami
· Membutuhkan alokasi memori yang besar
· Tidak cocok ketika kinerja tinggi diperlukan, karena terjadi overhead pemanggilan fungsi dalam jumlah yang relatif besar
· Merupakan fungsi menggunakan IF
Iterasi :
· Kode program lebih panjang, untuk beberapa kasus solusi iteratif lebih sulit diterapkan
· Relatif lebih kecil alokasi memorinya
· Cocok diterapkan ketika kinerja aplikasi harus diterapkan (hanya ada satu kali pemanggilan fungsi)
· Dapat berjalan pada program yang terdiri dari prosedur (rtidak terdapat fungsi) menggunakan FOR, WHILE, DO-WHILE
contoh program Rekursif
Dibawah ini Source codenya
#include <iostream.h>
#include <conio.h>
long int faktorial( long int a); //Prototype Fungsi
main(){
long int faktor;
long int n;
cout<<"Masukan Nilai Faktorial = ";
cin>>n;
faktor = faktorial(n);
cout<<n<<"! = "<<faktor<<endl;
getch();
}
long int faktorial( long int a){
if(a==1 || a==0){
return(1);
}else if (a>1){
return(a*faktorial(a-1));
}else{
return(0);
}
}
#Contoh Program Iterasi
Dibawah ini untuk Source Codenya
#include <stdio.h>
#include <conio.h>
#include <iostream>
int main () {
printf("Program Iterasi Perpangkatan \n\n");
int x,a,hasil;
{
printf ("masukkan nilai x = "); scanf("%d",&x);
printf("masukkan nilai a = "); scanf("%d", &a);
for (int i=0; i<a; i++)
hasil= x*x;
cout<<"hasil pemangkatan "<<x <<"^" <<a <<" = " <<hasil;
}
getch();
}