Perbezaan Antara Rekursi dan Pengulangan

Perbezaan Utama - Rekursi vs Iteration
 

Rekursi dan penyerapan boleh digunakan untuk menyelesaikan masalah pengaturcaraan. Pendekatan untuk menyelesaikan masalah menggunakan rekursi atau lelaran bergantung pada cara menyelesaikan masalah. The perbezaan utama antara rekursi dan lelaran ialah Rekursi adalah satu mekanisme untuk memanggil fungsi dalam fungsi yang sama manakala lelaran adalah untuk melaksanakan satu set arahan berulang kali sehingga keadaan yang diberikan adalah benar. Rekursi dan penyerapan adalah teknik utama untuk membangunkan algoritma dan membina aplikasi perisian.

KANDUNGAN

1. Gambaran Keseluruhan dan Perbezaan Utama
2. Apakah Rekursi
3. Apakah yang dimaksud dengan Iteration?
4. Kesamaan Antara Rekursi dan Pengulangan
5. Side by Side Perbandingan - Rekursi vs Iteration dalam Borang Tabular
6. Ringkasan

Apakah Rekursi?

Apabila fungsi memanggil dirinya dalam fungsi, ia dikenali sebagai Rekursi. Terdapat dua jenis rekursi. Mereka adalah rekursi terhingga dan rekursi tak terhingga. Rekursi selesai mempunyai keadaan penamatan. Rekursi tak terhingga tidak mempunyai keadaan penamatan.

Rekursi boleh dijelaskan menggunakan program untuk mengira faktorial.

n! = n * (n-1) !, jika n> 0

n! = 1, jika n = 0;

Rujuk kod bawah untuk mengira faktorial 3 (3! = 3 * 2 * 1).

intmain ()

int value = factorial (3);

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

kembali 0;

intfactorial (intn)

jika (n == 0)

kembali 1;

lain

pulangan n * factorial (n-1);

Apabila memanggil faktorial (3), fungsi itu akan memanggil faktorial (2). Apabila memanggil faktorial (2), fungsi itu akan memanggil faktorial (1). Kemudian factorial (1) akan memanggil factorial (0). faktorial (0) akan kembali 1. Dalam program di atas, n == 0 keadaan dalam "jika blok" adalah keadaan asas. Menurut Begitu juga, fungsi factorial dipanggil lagi dan lagi.

Fungsi rekursif berkaitan dengan timbunan. Di C, program utama boleh mempunyai banyak fungsi. Oleh itu, utama () adalah fungsi panggilan, dan fungsi yang dipanggil oleh program utama adalah fungsi yang dipanggil. Apabila fungsi dipanggil, kawalan diberikan kepada fungsi yang dipanggil. Selepas pelaksanaan fungsi selesai, kawalan dikembalikan ke utama. Kemudian program utama diteruskan. Jadi, ia mewujudkan rekod pengaktifan atau bingkai tindanan untuk meneruskan pelaksanaan.

Rajah 01: Rekursi

Dalam program di atas, apabila memanggil factorial (3) dari utama, ia mewujudkan rekod pengaktifan dalam timbunan panggilan. Kemudian, faktorial (2) bingkai tindanan dibuat di atas timbunan dan sebagainya. Rekod pengaktifan menyimpan maklumat mengenai pembolehubah tempatan dan lain-lain. Setiap kali fungsi dipanggil, satu set pemboleh ubah setempat dicipta di atas timbunan. Bingkai timbunan ini boleh memperlahankan kelajuan. Begitu juga dalam rekursi, fungsi berfungsi sendiri. Kerumitan masa untuk fungsi rekursif didapati dengan bilangan kali, fungsi dipanggil. Kerumitan masa untuk satu panggilan fungsi ialah O (1). Untuk n bilangan panggilan rekursif, kerumitan masa adalah O (n).

Apa itu Iteration?

Pengulangan adalah satu blok arahan yang berulang-ulang dan lagi sehingga keadaan yang diberikan adalah benar. Pengulangan boleh dicapai dengan menggunakan "untuk gelung", "do-while loop" atau "while loop". "Untuk gelung" sintaks adalah seperti berikut.

untuk (permulaan; keadaan; ubah suai)

// pernyataan;

Rajah 02: "untuk gambarajah aliran gelung"

Langkah awal memulakan terlebih dahulu. Langkah ini adalah untuk mengisytiharkan dan memulakan pembolehubah kawalan gelung. Sekiranya keadaan itu benar, kenyataan di dalam pendakap kerinting dilaksanakan. Kenyataan tersebut dilaksanakan sehingga keadaan itu benar. Sekiranya keadaan itu salah, kawalan akan pergi ke pernyataan seterusnya selepas "untuk gelung". Selepas melaksanakan pernyataan di dalam gelung, kawalan akan mengubah bahagian. Ia adalah untuk mengemas kini pemboleh ubah kawalan gelung. Kemudian keadaan diperiksa lagi. Jika keadaan itu benar, kenyataan di dalam pendakap kerinting akan dilaksanakan. Dengan cara ini "untuk gelung" melintang.

Dalam "sementara gelung", penyataan di dalam gelung dijalankan sehingga keadaan itu benar.

sementara (keadaan)

// pernyataan

Dalam "do-while" gelung, keadaan itu diperiksa pada akhir gelung. Oleh itu, gelung dijalankan sekurang-kurangnya sekali.

do

// pernyataan

sementara (keadaan)

Program untuk mencari faktorial 3 (3!) Menggunakan lelaran ("untuk gelung") adalah seperti berikut.

int main ()

intn = 3, faktorial = 1;

inti;

untuk (i = 1; i<=n ; i++)

faktorial = factorial * i;

printf ("Factorial adalah% d \ n", faktorial);

kembali 0;

Apakah Kesamaan Antara Rekursi dan Pengulangan?

  • Kedua-duanya adalah teknik untuk menyelesaikan masalah.
  • Tugas ini boleh diselesaikan sama ada dalam rekursi atau lelaran.

Apakah Perbezaan Antara Rekursi dan Pengulangan?

Rekursi vs Penyerapan

Rekursi adalah satu kaedah untuk memanggil fungsi dalam fungsi yang sama. Pengulangan adalah satu blok arahan yang berulang sehingga keadaan yang diberikan adalah benar.
Kompleks Ruang
Kerumitan ruang program rekursif lebih tinggi daripada lelaran. Kerumitan ruang lebih rendah dalam lelaran.
Kelajuan
Pelaksanaan rekursi perlahan. Biasanya, lelaran lebih cepat daripada rekursi.
Keadaan
Sekiranya tiada keadaan penamatan, terdapat rekursi tak terhingga. Sekiranya keadaan itu tidak pernah menjadi palsu, ia akan menjadi lelaran tak terhingga.
Timbunan
Dalam rekursi, timbunan digunakan untuk menyimpan pembolehubah tempatan apabila fungsi dipanggil. Dalam lelaran, timbunan tidak digunakan.
Kesesuaian Kod
Program rekursif lebih mudah dibaca. Program iteratif lebih sukar dibaca daripada program rekursif.

Ringkasan - Rekursi vs Iteration

Artikel ini membincangkan perbezaan antara rekursi dan lelaran. Kedua-duanya boleh digunakan untuk menyelesaikan masalah pengaturcaraan. Perbezaan antara rekursi dan lelaran ialah rekursi adalah mekanisme untuk memanggil fungsi dalam fungsi yang sama dan lelaran untuk melaksanakan satu set arahan berulang kali sehingga keadaan yang diberikan adalah benar. Jika masalah boleh diselesaikan dalam bentuk rekursif, ia juga boleh diselesaikan menggunakan lelaran.

Muat turun Versi PDF dari Rekursi vs Pengecutan

Anda boleh memuat turun versi PDF artikel ini dan menggunakannya untuk tujuan luar talian seperti nota kutipan. Sila muat turun versi PDF di sini Perbezaan antara Rekursi dan Pengulangan

Rujukan:

1.Point, Tutorial. "Struktur Data dan Asas Rekurasa Algoritma.", Titik Tutorial, 15 Ogos 2017. Boleh didapati di sini 
2.nareshtechnologies. "Rekursi dalam Fungsi C | Tutorial Bahasa C "YouTube, YouTube, 12 Sept 2016. Boleh didapati di sini  
3.yusuf shakeel. "Algoritma Rekursif | Factorial - panduan langkah demi langkah "YouTube, YouTube, 14 Okt 2013. Boleh didapati di sini  

Image Courtesy:

1.'CPT-Recursion-Factorial-Code'By Pluke - Kerja sendiri, (Domain Awam) melalui Wikimedia Commons 
2.'For-loop-diagram'By Tiada pengarang pembaca mesin yang dibekalkan - Kerja sendiri diasumsikan. (CC BY-SA 2.5) melalui Wikimedia Commons