Perbezaan antara rekursi dan lelaran

Perbezaan antara rekursi dan lelaran

Perbezaan utama - rekursi vs lelaran
 

Rekursi dan lelaran 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 adalah bahawa Rekursi adalah mekanisme untuk memanggil fungsi dalam fungsi yang sama semasa lelaran adalah untuk melaksanakan satu set arahan berulang kali sehingga keadaan yang diberikan adalah benar. Rekursi dan lelaran adalah teknik utama untuk membangunkan algoritma dan membina aplikasi perisian.

Kandungan

1. Gambaran Keseluruhan dan Perbezaan Utama
2. Apa itu rekursi
3. Apa lelaran
4. Persamaan antara rekursi dan lelaran
5. Perbandingan sampingan - rekursi vs lelaran dalam bentuk jadual
6. Ringkasan

Apa itu rekursi?

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

Rekursi dapat dijelaskan menggunakan program untuk mengira faktorial.

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

n! = 1, jika n = 0;

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

intmain ()

int nilai = faktorial (3);

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

kembali 0;

intfactorial (intn)

jika (n == 0)

kembali 1;

lain

kembali n* factorial (n-1);

Semasa memanggil faktorial (3), fungsi itu akan memanggil faktorial (2). Semasa 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 keadaan dalam "jika blok" adalah keadaan asas. Menurut begitu juga, fungsi faktorial dipanggil berulang kali.

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

Rajah 01: Rekursi

Dalam program di atas, ketika memanggil Factorial (3) dari Utama, ia mencipta rekod pengaktifan dalam timbunan panggilan. Kemudian, bingkai tumpukan faktorial (2) dibuat di atas timbunan dan sebagainya. Rekod pengaktifan menyimpan maklumat mengenai pembolehubah tempatan dll. Setiap kali fungsi dipanggil, satu set baru pembolehubah tempatan dibuat di bahagian atas timbunan. Bingkai timbunan ini dapat melambatkan kelajuan. Begitu juga dalam rekursi, fungsi memanggilnya sendiri. Kerumitan masa untuk fungsi rekursif dijumpai dengan bilangan kali, fungsi dipanggil.  Kerumitan masa untuk satu panggilan fungsi adalah O (1). Untuk b bilangan panggilan rekursif, kerumitan masa adalah O (n).

Apa lelaran?

Lelaran adalah satu blok arahan yang berulang -ulang kali sehingga keadaan yang diberikan adalah benar. Lelaran dapat dicapai menggunakan "untuk gelung", "do-while loop" atau "while loop". Sintaks "untuk gelung" adalah seperti berikut.

untuk (inisialisasi; keadaan; mengubah suai)

// pernyataan;

Rajah 02: "Untuk gambarajah aliran gelung"

Langkah permulaan yang dilaksanakan terlebih dahulu. Langkah ini adalah untuk mengisytiharkan dan memulakan pemboleh ubah kawalan gelung. Sekiranya keadaan itu benar, pernyataan di dalam pendakap keriting melaksanakan. Kenyataan tersebut dilaksanakan sehingga keadaan itu benar. Sekiranya keadaan itu palsu, kawalan pergi ke pernyataan seterusnya selepas "untuk gelung". Setelah melaksanakan pernyataan di dalam gelung, kawalan pergi ke bahagian mengubah suai. Ia adalah untuk mengemas kini pemboleh ubah kawalan gelung. Kemudian keadaannya diperiksa lagi. Sekiranya keadaan itu benar, pernyataan di dalam pendakap keriting akan dilaksanakan. Dengan cara ini "untuk gelung" berulang.

Dalam "Semasa Loop", Kenyataan di dalam gelung dijalankan sehingga keadaan itu benar.

sementara (keadaan)

// pernyataan

Dalam gelung "do-while", keadaannya diperiksa pada akhir gelung. Jadi, gelung itu melaksanakan sekurang -kurangnya sekali.

lakukan

// pernyataan

sementara (keadaan)

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

int main ()

intn = 3, factorial = 1;

Inti;

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

factorial = factorial *i;

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

kembali 0;

Apakah persamaan antara rekursi dan lelaran?

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

Apakah perbezaan antara rekursi dan lelaran?

Rekursi vs lelaran

Rekursi adalah kaedah memanggil fungsi dalam fungsi yang sama. Lelaran adalah blok arahan yang diulang sehingga keadaan yang diberikan adalah benar.
Kerumitan ruang
Kerumitan ruang program rekursi lebih tinggi daripada lelaran. Kerumitan ruang lebih rendah dalam lelaran.
Kelajuan
Pelaksanaan rekursi lambat. Biasanya, lelaran lebih cepat daripada rekursi.
Keadaan
Sekiranya tidak ada keadaan penamatan, mungkin ada rekursi tak terhingga. Sekiranya keadaan tidak pernah menjadi palsu, ia akan menjadi lelaran yang tidak terhingga.
Timbunan
Dalam rekursi, timbunan digunakan untuk menyimpan pembolehubah tempatan apabila fungsi dipanggil. Dalam lelaran, timbunan tidak digunakan.
Kebolehbacaan kod
Program rekursif lebih mudah dibaca. Program berulang lebih sukar dibaca daripada program rekursif.

Ringkasan -Rekursi vs lelaran

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

Muat turun versi pdf rekursi vs lelaran

Anda boleh memuat turun versi PDF artikel ini dan menggunakannya untuk tujuan luar talian mengikut nota petikan. Sila muat turun versi pdf di sini perbezaan antara rekursi dan lelaran

Rujukan:

1.Titik, tutorial. "Struktur data dan algoritma asas rekursi.", Tutorial Titik, 15 Ogos. 2017. Terdapat di sini 
2.Nareshtechnologies. "Rekursi dalam fungsi C | C Tutorial Bahasa "YouTube, YouTube, 12 Sept. 2016.  Terdapat di sini  
3.Yusuf Shakeel. "Algoritma Rekursi | Factorial - Langkah demi Langkah Panduan "YouTube, YouTube, 14 Okt. 2013.  Terdapat di sini  

Ihsan gambar:

1.'CPT-recursion-factorial-code'by pluke-kerja sendiri, (domain awam) melalui Commons Wikimedia 
2.'For-loop-diagram'by mesin yang boleh dibaca mesin yang disediakan-kerja sendiri diandaikan. (CC BY-SA 2.5) Melalui Wikimedia Commons