Perbedaan antara rekursi dan iterasi

Perbedaan antara rekursi dan iterasi

Perbedaan utama - Rekursi vs iterasi
 

Rekursi dan iterasi dapat digunakan untuk menyelesaikan masalah pemrograman. Pendekatan untuk menyelesaikan 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 fungsi dalam fungsi yang sama saat iterasi adalah untuk menjalankan satu set instruksi berulang kali sampai kondisi yang diberikan benar. Rekursi dan iterasi adalah teknik utama untuk mengembangkan algoritma dan membangun aplikasi perangkat lunak.

ISI

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 tabel
6. Ringkasan

Apa itu rekursi?

Ketika suatu fungsi menyebut dirinya dalam fungsi, ia dikenal sebagai rekursi. Ada dua jenis rekursi. Mereka adalah rekursi yang terbatas dan rekursi yang tak terbatas. Rekursi yang terbatas memiliki kondisi penghentian. Rekursi tak terbatas tidak memiliki kondisi penghentian.

Rekursi dapat dijelaskan dengan menggunakan program untuk menghitung faktorial.

N! = n * (n-1)!, Jika n> 0

N! = 1, jika n = 0;

Rujuk kode Bellow untuk menghitung faktorial 3 (3!= 3*2*1).

intmain ()

nilai int = faktorial (3);

printf ("Faktorial adalah %d \ n", nilai);

kembali 0;

intfactorial (intn)

if (n == 0)

kembali 1;

kalau tidak

return n* factorial (n-1);

Saat memanggil faktorial (3), fungsi itu akan memanggil faktorial (2). Saat menelepon faktorial (2), fungsi itu akan memanggil faktorial (1). Kemudian faktorial (1) akan memanggil faktorial (0). faktorial (0) akan kembali 1. Dalam program di atas, N == 0 kondisi dalam "if block" adalah kondisi dasar. Menurut juga, fungsi faktorial disebut lagi dan lagi.

Fungsi rekursif terkait dengan tumpukan. Di C, program utama dapat memiliki banyak fungsi. Jadi, main () adalah fungsi panggilan, dan fungsi yang disebut 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 berlanjut. Jadi, ini membuat catatan aktivasi atau bingkai tumpukan untuk melanjutkan eksekusi.

Gambar 01: Rekursi

Dalam program di atas, saat memanggil faktorial (3) dari Main, itu membuat catatan aktivasi di tumpukan panggilan. Kemudian, Factorial (2) Stack Frame dibuat di atas tumpukan dan sebagainya. Catatan aktivasi menyimpan informasi tentang variabel lokal dll. Setiap kali fungsi disebut, satu set variabel lokal baru dibuat di bagian atas tumpukan. Bingkai tumpukan ini dapat memperlambat kecepatan. Demikian juga dalam rekursi, fungsi memanggil itu sendiri. Kompleksitas waktu untuk fungsi rekursif ditemukan oleh berapa kali, fungsi disebut.  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 kali sampai kondisi yang diberikan benar. Iterasi dapat dicapai dengan menggunakan "untuk loop", "do-while loop" atau "while loop". Sintaks "untuk loop" adalah sebagai berikut.

untuk (inisialisasi; kondisi; ubah)

// pernyataan;

Gambar 02: "Untuk Diagram Alir Loop"

Langkah inisialisasi dijalankan terlebih dahulu. Langkah ini adalah mendeklarasikan dan menginisialisasi variabel kontrol loop. Jika kondisinya benar, pernyataan di dalam kawat gigi keriting dijalankan. Pernyataan -pernyataan itu dijalankan sampai kondisinya benar. Jika kondisinya salah, kontrol masuk ke pernyataan berikutnya setelah "untuk loop". Setelah menjalankan pernyataan di dalam loop, kontrol masuk untuk memodifikasi bagian. Itu adalah memperbarui variabel kontrol loop. Kemudian kondisinya diperiksa lagi. Jika kondisinya benar, pernyataan di dalam kawat gigi keriting akan dieksekusi. Dengan cara ini "untuk loop" iterasi.

Dalam "While Loop", Pernyataan di dalam loop dijalankan sampai kondisinya benar.

while (kondisi)

// pernyataan

Dalam loop "do-while", Kondisinya diperiksa di ujung loop. Jadi, loop mengeksekusi setidaknya sekali.

Mengerjakan

// 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);

kembali 0;

Apa kesamaan antara rekursi dan iterasi?

  • Keduanya adalah teknik untuk memecahkan masalah.
  • Tugas dapat diselesaikan baik dalam rekursi atau iterasi.

Apa perbedaan antara rekursi dan iterasi?

Rekursi vs iterasi

Rekursi adalah metode memanggil fungsi dalam fungsi yang sama. Iterasi adalah blok instruksi yang berulang sampai kondisi yang diberikan benar.
Kompleksitas ruang
Kompleksitas ruang program rekursif lebih tinggi dari iterasi. Kompleksitas ruang lebih rendah dalam iterasi.
Kecepatan
Eksekusi rekursi lambat. Biasanya, iterasi lebih cepat dari rekursi.
Kondisi
Jika tidak ada kondisi penghentian, mungkin ada rekursi yang tak terbatas. Jika kondisi tidak pernah menjadi salah, itu akan menjadi iterasi yang tak terbatas.
Tumpukan
Dalam rekursi, tumpukan digunakan untuk menyimpan variabel lokal ketika fungsi disebut. Dalam iterasi, tumpukan tidak digunakan.
Keterbacaan kode
Program rekursif lebih mudah dibaca. Program berulang 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 menjalankan satu set instruksi berulang kali sampai kondisi yang diberikan benar. Jika suatu masalah dapat diselesaikan dalam bentuk rekursif, itu juga dapat diselesaikan dengan menggunakan iterasi.

Unduh Rekursi Versi PDF vs iterasi

Anda dapat mengunduh versi PDF artikel ini dan menggunakannya untuk tujuan offline sesuai catatan kutipan. Silakan unduh versi pdf di sini perbedaan antara rekursi dan iterasi

Referensi:

1.Poin, tutorial. “Data Data dan Algoritma Recursion Basics.”, Tutorials Point, 15 Agustus. 2017. Tersedia disini 
2.nareshtechnologies. “Rekursi dalam fungsi C | T Tutorial Bahasa C ”YouTube, YouTube, 12 September. 2016.  Tersedia disini  
3.Yusuf Shakeel. “Algoritma Rekursi | Faktorial - Panduan Langkah demi Langkah ”YouTube, YouTube, 14 Okt. 2013.  Tersedia disini  

Gambar milik:

1.'CPT-Recursion-Factorial-Code'by Pluke-karya sendiri, (domain publik) via Commons Wikimedia 
2.'For-loop-diagram'by no machine yang dapat dibaca penulis disediakan-karya sendiri diasumsikan. (CC BY-SA 2.5) Via Commons Wikimedia