Perbedaan Kunci – Rekursi vs Iterasi
Rekursi dan Iterasi dapat digunakan untuk menyelesaikan masalah pemrograman. Pendekatan untuk memecahkan masalah menggunakan rekursi atau iterasi tergantung pada cara untuk memecahkan masalah. Perbedaan utama antara rekursi dan iterasi adalah bahwa rekursi adalah mekanisme untuk memanggil fungsi dalam fungsi yang sama sementara iterasi adalah mengeksekusi serangkaian instruksi berulang kali hingga kondisi yang diberikan benar. Rekursi dan Iterasi adalah teknik utama untuk mengembangkan algoritme dan membangun aplikasi perangkat lunak.
Apa itu Rekursi?
Ketika suatu fungsi memanggil dirinya sendiri di dalam fungsi, itu dikenal sebagai Rekursi. Ada dua jenis rekursi. Mereka adalah rekursi terbatas dan rekursi tak terbatas. Rekursi hingga memiliki kondisi terminasi. Rekursi tak terbatas tidak memiliki kondisi terminasi.
Rekursi dapat dijelaskan dengan menggunakan program untuk menghitung faktorial.
n!=n(n-1)!, jika n>0
n!=1, jika n=0;
Lihat kode di bawah ini untuk menghitung faktorial dari 3(3!=321).
intmain() {
int nilai=faktorial (3);
printf(“Faktorial adalah %d\n”, nilai);
kembali 0;
}
intfactorial (intn) {
jika(n==0) {
kembali 1;
}
lain {
kembali n faktorial(n-1);
}
}
Saat memanggil faktorial (3), fungsi tersebut akan memanggil faktorial (2). Saat memanggil faktorial (2), fungsi itu akan memanggil faktorial (1). Kemudian faktorial (1) akan memanggil faktorial (0). faktorial (0) akan mengembalikan 1. Pada program di atas, kondisi n==0 pada blok “if” adalah kondisi dasar. Menurut Demikian juga, fungsi faktorial dipanggil lagi dan lagi.
Fungsi rekursif terkait dengan tumpukan. Dalam C, program utama dapat memiliki banyak fungsi. Jadi, main() adalah fungsi pemanggil, dan fungsi yang dipanggil oleh program utama adalah fungsi yang dipanggil. Ketika fungsi dipanggil, kontrol diberikan ke fungsi yang dipanggil. Setelah eksekusi fungsi selesai, kontrol dikembalikan ke main. Kemudian program utama dilanjutkan. Jadi, itu membuat catatan aktivasi atau bingkai tumpukan untuk melanjutkan eksekusi.
Gambar 01: Rekursi
Dalam program di atas, saat memanggil faktorial (3) dari main, ia membuat catatan aktivasi di tumpukan panggilan. Kemudian, bingkai tumpukan faktorial (2) dibuat di atas tumpukan dan seterusnya. Catatan aktivasi menyimpan informasi tentang variabel lokal dll. Setiap kali fungsi dipanggil, satu set variabel lokal baru dibuat di atas tumpukan. Bingkai tumpukan ini dapat memperlambat kecepatan. Demikian juga dalam rekursi, suatu fungsi memanggil dirinya sendiri. Kompleksitas waktu untuk fungsi rekursif ditemukan dengan berapa kali fungsi tersebut dipanggil. Kompleksitas waktu untuk satu panggilan fungsi adalah O(1). Untuk n jumlah panggilan rekursif, kompleksitas waktu adalah O(n).
Apa itu Iterasi?
Iterasi adalah blok instruksi yang berulang-ulang sampai kondisi yang diberikan benar. Iterasi dapat dicapai dengan menggunakan “for loop”, “do-while loop” atau “while loop”. Sintaks “for loop” adalah sebagai berikut.
for (inisialisasi; kondisi; modifikasi) {
// pernyataan;
}
Gambar 02: “untuk diagram alir loop”
Langkah inisialisasi dijalankan terlebih dahulu. Langkah ini adalah untuk mendeklarasikan dan menginisialisasi variabel kontrol loop. Jika kondisinya benar, pernyataan di dalam kurung kurawal dieksekusi. Pernyataan-pernyataan tersebut dijalankan sampai kondisinya benar. Jika kondisinya salah, kontrol pergi ke pernyataan berikutnya setelah "for loop". Setelah mengeksekusi pernyataan di dalam loop, kontrol beralih ke bagian modifikasi. Ini untuk memperbarui variabel kontrol loop. Kemudian kondisinya diperiksa kembali. Jika kondisinya benar, pernyataan di dalam kurung kurawal akan dieksekusi. Dengan cara ini "for loop" berulang.
Dalam “while loop”, pernyataan-pernyataan di dalam loop dijalankan sampai kondisi benar.
sementara (kondisi){
//pernyataan
}
Dalam perulangan “do-while”, kondisi diperiksa di akhir perulangan. Jadi, loop dijalankan setidaknya sekali.
lakukan{
//pernyataan
} while(kondisi)
Program untuk mencari faktorial dari 3 (3!) menggunakan iterasi (“for loop”) adalah sebagai berikut.
int main(){
intn=3, faktorial=1;
inti;
untuk(i=1; i<=n; i++){
faktorial=faktoriali;
}
printf(“Faktorial adalah %d\n”, faktorial);
kembali 0;
}
Apa Persamaan Antara Rekursi dan Iterasi?
- Keduanya adalah teknik untuk memecahkan masalah.
- Tugas dapat diselesaikan baik dalam rekursi atau iterasi.
Apa Perbedaan Rekursi dan Iterasi?
Rekursi vs Iterasi |
|
Rekursi adalah metode pemanggilan fungsi dalam fungsi yang sama. | Iterasi adalah blok instruksi yang berulang sampai kondisi yang diberikan benar. |
Kompleksitas Ruang | |
Kompleksitas ruang program rekursif lebih tinggi daripada iterasi. | Kompleksitas ruang lebih rendah dalam iterasi. |
Kecepatan | |
Eksekusi rekursi lambat. | Biasanya, iterasi lebih cepat daripada rekursi. |
Kondisi | |
Jika tidak ada kondisi terminasi, dapat terjadi rekursi tak terhingga. | Jika kondisinya tidak pernah salah, itu akan menjadi iterasi tak terbatas. |
Stack | |
Dalam rekursi, stack digunakan untuk menyimpan variabel lokal saat fungsi dipanggil. | Dalam sebuah iterasi, tumpukan tidak digunakan. |
Keterbacaan Kode | |
Program rekursif lebih mudah dibaca. | Program iteratif lebih sulit dibaca daripada program rekursif. |
Ringkasan – Rekursi vs Iterasi
Artikel ini membahas perbedaan antara rekursi dan iterasi. Keduanya dapat digunakan untuk menyelesaikan masalah pemrograman. Perbedaan antara rekursi dan iterasi adalah bahwa rekursi adalah mekanisme untuk memanggil fungsi dalam fungsi yang sama dan iterasi untuk mengeksekusi serangkaian instruksi berulang kali sampai kondisi yang diberikan benar. Jika suatu masalah dapat diselesaikan dalam bentuk rekursif, masalah tersebut juga dapat diselesaikan dengan menggunakan iterasi.
Unduh Versi PDF dari Rekursi vs Iterasi
Anda dapat mengunduh versi PDF dari artikel ini dan menggunakannya untuk tujuan offline sesuai catatan kutipan. Silakan unduh versi PDF di sini Perbedaan Antara Rekursi dan Iterasi