Perbezaan Antara Rekursi dan Lelaran

Isi kandungan:

Perbezaan Antara Rekursi dan Lelaran
Perbezaan Antara Rekursi dan Lelaran

Video: Perbezaan Antara Rekursi dan Lelaran

Video: Perbezaan Antara Rekursi dan Lelaran
Video: Belajar C++ [Dasar] - 35 - Fungsi Rekursif 2024, Julai
Anonim

Perbezaan Utama – Rekursi lwn Lelaran

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

Apakah itu Rekursi?

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

Rekursi boleh dijelaskan menggunakan atur cara untuk mengira pemfaktoran.

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

n!=1, jika n=0;

Rujuk kod di bawah untuk mengira pemfaktoran 3(3!=321).

intmain () {

nilai int=faktorial (3);

printf(“Faktor ialah %d\n”, nilai);

kembali 0;

}

intfaktorial (intn) {

jika(n==0) {

kembali 1;

}

lain {

pulangan n faktorial(n-1);

}

}

Apabila memanggil faktorial (3), fungsi itu akan memanggil faktorial (2). Apabila memanggil faktorial (2), fungsi itu akan memanggil faktorial (1). Kemudian faktorial (1) akan memanggil faktorial (0). faktorial (0) akan mengembalikan 1. Dalam atur cara di atas, n==0 keadaan dalam “jika blok” ialah keadaan asas. Menurut Begitu juga, fungsi faktorial dipanggil berulang kali.

Fungsi rekursif berkaitan dengan timbunan. Dalam C, program utama boleh mempunyai banyak fungsi. Jadi, main () ialah fungsi panggilan, dan fungsi yang dipanggil oleh atur cara utama ialah 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 mencipta rekod pengaktifan atau bingkai tindanan untuk meneruskan pelaksanaan.

Perbezaan Antara Rekursi dan Lelaran
Perbezaan Antara Rekursi dan Lelaran
Perbezaan Antara Rekursi dan Lelaran
Perbezaan Antara Rekursi dan Lelaran

Rajah 01: Rekursi

Dalam program di atas, apabila memanggil faktorial (3) dari utama, ia mencipta rekod pengaktifan dalam tindanan panggilan. Kemudian, bingkai tindanan faktorial (2) dicipta di atas tindanan dan seterusnya. Rekod pengaktifan menyimpan maklumat tentang pembolehubah tempatan dsb. Setiap kali fungsi dipanggil, satu set pembolehubah tempatan baharu dicipta di bahagian atas timbunan. Bingkai tindanan ini boleh memperlahankan kelajuan. Begitu juga dalam rekursi, fungsi memanggil dirinya sendiri. Kerumitan masa untuk fungsi rekursif ditemui mengikut bilangan kali, fungsi dipanggil. Kerumitan masa untuk satu panggilan fungsi ialah O(1). Untuk n bilangan panggilan rekursif, kerumitan masa ialah O(n).

Apakah Lelaran?

Lelaran ialah blok arahan yang berulang lagi dan lagi sehingga syarat yang diberikan adalah benar. Lelaran boleh dicapai menggunakan "untuk gelung", "do-while loop" atau "while loop". Sintaks "untuk gelung" adalah seperti berikut.

untuk (permulaan; syarat; ubah suai) {

// penyata;

}

Perbezaan Utama Antara Rekursi dan Lelaran
Perbezaan Utama Antara Rekursi dan Lelaran
Perbezaan Utama Antara Rekursi dan Lelaran
Perbezaan Utama Antara Rekursi dan Lelaran

Rajah 02: “untuk gambarajah aliran gelung”

Langkah permulaan dilaksanakan dahulu. Langkah ini adalah untuk mengisytiharkan dan memulakan pembolehubah kawalan gelung. Jika keadaan itu benar, pernyataan di dalam pendakap kerinting dilaksanakan. Pernyataan tersebut dilaksanakan sehingga keadaan benar. Jika syarat adalah palsu, kawalan pergi ke pernyataan seterusnya selepas "untuk gelung". Selepas melaksanakan pernyataan di dalam gelung, kawalan pergi untuk mengubah suai bahagian. Ia adalah untuk mengemas kini pembolehubah kawalan gelung. Kemudian keadaan diperiksa semula. Jika keadaan itu benar, pernyataan di dalam pendakap kerinting akan dilaksanakan. Dengan cara ini "untuk gelung" berulang.

Dalam “while loop”, penyataan di dalam gelung dilaksanakan sehingga keadaan benar.

sementara (syarat){

//penyata

}

Dalam gelung “do-while”, keadaan disemak pada penghujung gelung. Jadi, gelung dilaksanakan sekurang-kurangnya sekali.

do{

//penyata

} sementara(syarat)

Program untuk mencari faktorial bagi 3 (3!) menggunakan lelaran (“untuk gelung”) adalah seperti berikut.

int main(){

intn=3, faktorial=1;

inti;

for(i=1; i<=n; i++){

faktorial=faktoriali;

}

printf(“Faktor ialah %d\n”, faktorial);

kembali 0;

}

Apakah Persamaan Antara Rekursi dan Lelaran?

  • Kedua-duanya adalah teknik untuk menyelesaikan masalah.
  • Tugas boleh diselesaikan sama ada secara berulang atau lelaran.

Apakah Perbezaan Antara Rekursi dan Lelaran?

Rekursi lwn Lelaran

Rekursi ialah kaedah memanggil fungsi dalam fungsi yang sama. Lelaran ialah blok arahan yang berulang sehingga syarat yang diberikan adalah benar.
Kerumitan Ruang
Kerumitan ruang program rekursif adalah lebih tinggi daripada lelaran. Kerumitan ruang adalah lebih rendah dalam lelaran.
Kelajuan
Pelaksanaan rekursi adalah perlahan. Biasanya, lelaran lebih cepat daripada rekursi.
Keadaan
Jika tiada syarat penamatan, boleh berlaku pengulangan tak terhingga. Jika syarat tidak pernah menjadi palsu, ia akan menjadi lelaran yang tidak terhingga.
Timbunan
Dalam rekursi, tindanan digunakan untuk menyimpan pembolehubah setempat apabila fungsi dipanggil. Dalam lelaran, tindanan tidak digunakan.
Kebolehbacaan Kod
Atur cara rekursif lebih mudah dibaca. Atur cara berulang lebih sukar dibaca daripada program rekursif.

Ringkasan – Rekursi lwn Lelaran

Artikel ini membincangkan perbezaan antara pengulangan dan lelaran. Kedua-duanya boleh digunakan untuk menyelesaikan masalah pengaturcaraan. Perbezaan antara rekursi dan lelaran ialah rekursi ialah 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 Rekursi vs Lelaran

Anda boleh memuat turun versi PDF artikel ini dan menggunakannya untuk tujuan luar talian seperti dalam nota petikan. Sila muat turun versi PDF di sini Perbezaan Antara Rekursi dan Lelaran

Disyorkan: