Rekursi dan Iterasi dapat digunakan untuk memecahkan masalah pemrograman. Pendekatan untuk memecahkan masalah menggunakan rekursi atau iterasi tergantung pada cara untuk menyelesaikan masalah. Itu perbedaan utama antara rekursi dan iterasi adalah itu rekursi adalah mekanisme untuk memanggil suatu fungsi dalam fungsi yang sama sementara iterasi adalah untuk mengeksekusi serangkaian instruksi berulang kali sampai kondisi yang diberikan benar. Rekursi dan Iterasi adalah teknik utama untuk mengembangkan algoritma dan membangun aplikasi perangkat lunak.
1. Ikhtisar dan Perbedaan Utama
2. Apa itu Rekursi?
3. Apa itu Iterasi?
4. Kesamaan Antara Rekursi dan Iterasi
5. Perbandingan Berdampingan - Rekursi vs Iterasi dalam Bentuk Tabular
6. Ringkasan
Ketika suatu fungsi memanggil dirinya sendiri dalam fungsi, itu dikenal sebagai Rekursi. Ada dua jenis rekursi. Mereka adalah rekursi terbatas dan rekursi tak terbatas. Rekursi terbatas memiliki kondisi terminating. Rekursi tak terbatas tidak memiliki kondisi terminating.
Rekursi dapat dijelaskan dengan menggunakan program untuk menghitung faktorial.
n! = n * (n-1) !, jika n> 0
n! = 1, jika n = 0;
Rujuk kode di bawah ini untuk menghitung faktorial 3 (3! = 3 * 2 * 1).
intmain ()
nilai int = faktorial (3);
printf ("Faktorial adalah% d \ n", nilai);
return 0;
intfactorial (intn)
if (n == 0)
return 1;
lain
return n * faktorial (n-1);
Saat memanggil faktorial (3), fungsi itu akan memanggil faktorial (2). Saat memanggil faktorial (2), fungsi itu akan memanggil faktorial (1). Maka faktorial (1) akan memanggil faktorial (0). faktorial (0) akan kembali 1. Dalam program di atas, n == 0 kondisi di "jika blok" adalah kondisi dasar. Menurut Demikian juga, fungsi faktorial dipanggil lagi dan lagi.
Fungsi rekursif terkait dengan stack. Di C, program utama dapat memiliki banyak fungsi. Jadi, main () adalah fungsi panggilan, 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 utama. Kemudian program utama berlanjut. Jadi, itu menciptakan catatan aktivasi atau bingkai tumpukan untuk melanjutkan eksekusi.
Gambar 01: Rekursi
Dalam program di atas, ketika memanggil faktorial (3) dari utama, itu menciptakan 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, set variabel lokal baru dibuat di atas tumpukan. Frame tumpukan ini dapat memperlambat kecepatan. Demikian juga dalam rekursi, suatu fungsi memanggil dirinya sendiri. Kompleksitas waktu untuk fungsi rekursif ditemukan oleh berapa kali, fungsi ini disebut. Kompleksitas waktu untuk satu panggilan fungsi adalah O (1). Untuk n jumlah panggilan rekursif, kompleksitas waktu adalah O (n).
Iterasi adalah blok instruksi yang berulang-ulang sampai kondisi yang diberikan benar. Iterasi dapat dicapai menggunakan "for loop", "do-while loop" atau "while loop". Sintaks "untuk loop" adalah sebagai berikut.
untuk (inisialisasi; kondisi; memodifikasi)
// 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 akan dieksekusi. Pernyataan-pernyataan itu dieksekusi sampai kondisi benar. Jika kondisinya salah, kontrol menuju ke pernyataan berikutnya setelah "for loop". Setelah mengeksekusi pernyataan di dalam loop, kontrol pergi untuk memodifikasi bagian. 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 di dalam loop dijalankan sampai kondisi benar.
while (kondisi)
// pernyataan
Di loop "do-while", kondisi diperiksa di akhir loop. Jadi, loop dijalankan setidaknya sekali.
melakukan
// pernyataan
while (kondisi)
Program untuk menemukan faktorial 3 (3!) Menggunakan iterasi ("untuk loop") adalah sebagai berikut.
int main ()
intn = 3, faktorial = 1;
inti;
untuk (i = 1; i<=n ; i++)
faktorial = faktorial * i;
printf ("Faktorial adalah% d \ n", faktorial);
return 0;
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 dari 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, akan ada rekursi tak terbatas. | Jika kondisi tidak pernah menjadi salah, itu akan menjadi iterasi tanpa batas. |
Tumpukan | |
Dalam rekursi, stack digunakan untuk menyimpan variabel lokal ketika fungsi dipanggil. | Dalam iterasi, tumpukan tidak digunakan. |
Keterbacaan Kode | |
Program rekursif lebih mudah dibaca. | Program iteratif lebih sulit dibaca daripada program rekursif. |
Artikel ini membahas perbedaan antara rekursi dan iterasi. Keduanya dapat digunakan untuk memecahkan 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 masalah dapat diselesaikan dalam bentuk rekursif, itu juga dapat diselesaikan dengan menggunakan 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
1. Point, Tutorial. "Data Structures and Algorithms Basics.", Tutorials Point, 15 Agustus 2017. Tersedia di sini
2. teknologi perangkat. “Rekursi dalam Fungsi C | C Language Tutorial ”YouTube, YouTube, 12 September 2016. Tersedia di sini
3. yusuf shakeel. “Algoritma Rekursi | Faktorial - panduan langkah demi langkah ”YouTube, YouTube, 14 Oktober 2013. Tersedia di sini
1.'CPT-Recursion-Factorial-Code'By Pluke - Karya sendiri, (Domain Publik) via Commons Wikimedia
2. 'Untuk-loop-diagram' Dengan tidak ada mesin yang dapat dibaca penulis disediakan - Pekerjaan sendiri diasumsikan. (CC BY-SA 2.5) melalui Commons Wikimedia