PERBEDAAN ALGORITMA ITERATIF DAN REKURSIF
A. ITERATIF
1.Pengertian iteratif
Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok instruksi di mana perulangan tersebut akan berhenti jika batasan syarat sudah tidak terpenuhi.
Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok instruksi di mana perulangan tersebut akan berhenti jika batasan syarat sudah tidak terpenuhi.
Algoritma iteratif
- Teknik Iteratif merupakan suatu teknik pembuatan algoritma
dengan pemanggilan procedure beberapa kali atau hingga suatu
kondisi tertentu terpenuhi.
- Tidak ada variabel lokal baru
- Program tidak sederhana
- Menggunakan perulangan for dan while
Perulangan
iteratif merupakan
perulangan yang melakukan proses perulangan terhadap sekelompok intruksi.
Perulangan dilakukan dalam batasan syarat tertentu. Ketika syarat tersebut
tidak terpenuhi lagi maka perulangan aka terhenti.
Kelebihan perulangan iteratif:
• Mudah dipahami dan mudah melakukan debugging ketika ada perulangan yang salah.
• Dapat melakukan nested loop atau yang disebut dengan looping bersarang.
• Proses lebih singkat karena perulangan terjadi pada kondisi yang telah disesuaikan.
• Jarang terjadi overflow karena batasan dan syarat perulangan yang jelas.
• Mudah dipahami dan mudah melakukan debugging ketika ada perulangan yang salah.
• Dapat melakukan nested loop atau yang disebut dengan looping bersarang.
• Proses lebih singkat karena perulangan terjadi pada kondisi yang telah disesuaikan.
• Jarang terjadi overflow karena batasan dan syarat perulangan yang jelas.
Kelemahan
perulangan iteratif:
• Tidak dapat menggunakan batasan berupa fungsi.
• Perulangan dengan batasan yang luas akan menyulitkan dalam pembuatan program perulangan itu sendiri.
• Tidak dapat menggunakan batasan berupa fungsi.
• Perulangan dengan batasan yang luas akan menyulitkan dalam pembuatan program perulangan itu sendiri.
program
1
Bentuk
fungsi iteratif :
#include
<cstdlib>
#include
<iostream>
using
namespace std;
int
jumlah(int n) {
int
hasil = 0;
for
(int i=0; i<n; i=i+2)
hasil
= hasil + i;
return
hasil;
}
void
cetak(int n) {
for
(int i=0; i<n; i=i+2)
cout
<< i << ” “;
}
int
main(int argc, char *argv[])
{
int
n = 10;
cout
<< jumlah(n);
cetak(n);
system(“PAUSE”);
return
EXIT_SUCCESS;
}
B.REKURSIF
1.Pengertian Rekursif
Rekursif
dapat diartikan bahwa suatu proses yang bisa memanggil dirinya sendiri.
sedikit menyimpang dari pengertian ada sedikit pendapat tentang Rekursif salah
satunya adalah Menurut definisi dalam Microsoft Bookshelf, Rekursif
adalah kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam Rekursif
sebenarnya terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa
rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus
dipanggil lewat pemanggil prosedur dan fungsi. Rekursif merupakan teknik
pemrograman yang penting dan beberapa bahasa pemrograman mendukung keberadaan
proses rekursif ini. Dalam prosedur dan fungsi, pemanggilan ke dirinya sendiri
bisa berarti proses berulang yang tidak bisa diketahui kapan akan berakhir.
Algoritma rekursif
-
Teknik Rekursif merupakan salah satu cara pembuatan algoritma dengan
pemanggilan procedure atau function yang sama
-
Ada variabel lokal baru
-
Program menjadi lebih sederhana
-
Menggunakan perulangan if else
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.
• Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar.
• Dapat melakukan perulangan dengan batasan fungsi.
Perulangan
rekursif merupakan salah satu metode didalam
pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil
fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri.
Kekurangan
perulangan rekursif:
• Tidak bisa melakukan nested loop atau looping bersarang.
• Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
• Trace error sulit.
• Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack Overrun).
• Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.
• Tidak bisa melakukan nested loop atau looping bersarang.
• Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
• Trace error sulit.
• Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack Overrun).
• Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.
jika
pada program 1, diubah kedalam bentuk rekursif :
Dalam
bentuk rekursif :
#include
<cstdlib>
#include
<iostream>
using
namespace std;
int
jumlah(int n) {
if(n==0)
return (0);
else
return (n-2 + jumlah(n-2));
}
void
cetak(int n) {
if(n!=0){
cetak(n-2);
cout
<< n-2 << ” “;
}
}
int
main(int argc, char *argv[])
{
int
n = 10;
cout
<< jumlah(n);
cetak(n);
system(“PAUSE”);
return
EXIT_SUCCESS;
}
Tidak ada komentar:
Posting Komentar