Mahalagang Pagkakaiba – Recursion vs Iteration
Recursion at Iteration ay maaaring gamitin upang malutas ang mga problema sa programming. Ang diskarte sa paglutas ng problema gamit ang recursion o pag-ulit ay nakasalalay sa paraan upang malutas ang problema. Ang pangunahing pagkakaiba sa pagitan ng recursion at iteration ay ang recursion ay isang mekanismo para tumawag ng function sa loob ng parehong function habang ang iteration ay paulit-ulit na magsagawa ng set ng mga tagubilin hanggang sa ang ibinigay na kundisyon ay totoo. Ang Recursion at Iteration ay mga pangunahing pamamaraan para sa pagbuo ng mga algorithm at pagbuo ng mga software application.
Ano ang Recursion?
Kapag tinawag ng isang function ang sarili nito sa loob ng function, ito ay kilala bilang Recursion. Mayroong dalawang uri ng recursion. Ang mga ito ay may hangganan na recursion at walang katapusang recursion. May wakas na recursion ang kondisyon ng pagtatapos. Walang kondisyong pangwakas ang infinite recursion.
Maaaring ipaliwanag ang recursion gamit ang program para kalkulahin ang mga factorial.
n!=n(n-1)!, kung n>0
n!=1, kung n=0;
Sumangguni sa ibabang code upang kalkulahin ang factorial na 3(3!=321).
intmain () {
int value=factorial (3);
printf(“Ang factorial ay %d\n”, value);
return 0;
}
intfacttorial (intn) {
if(n==0) {
return 1;
}
iba {
ibalik n factorial(n-1);
}
}
Kapag tumatawag sa factorial (3), tatawagin ng function na iyon ang factorial (2). Kapag tumatawag sa factorial (2), tatawagin ng function na factorial (1). Pagkatapos ang factorial (1) ay tatawag ng factorial (0). Ang factorial (0) ay magbabalik ng 1. Sa programa sa itaas, n==0 na kondisyon sa “if block” ay ang batayang kondisyon. Ayon sa Ganun din, paulit-ulit na tinatawag ang factorial function.
Recursive function ay nauugnay sa stack. Sa C, ang pangunahing programa ay maaaring magkaroon ng maraming mga pag-andar. Kaya, ang pangunahing () ay ang function ng pagtawag, at ang function na tinatawag ng pangunahing programa ay ang tinatawag na function. Kapag tinawag ang function, ibibigay ang control sa tinatawag na function. Matapos makumpleto ang pagpapatupad ng function, ang kontrol ay ibabalik sa pangunahing. Pagkatapos ay nagpapatuloy ang pangunahing programa. Kaya, gumagawa ito ng talaan ng pag-activate o stack frame para ipagpatuloy ang pagpapatupad.
Figure 01: Recursion
Sa programa sa itaas, kapag tumatawag sa factorial (3) mula sa main, lumilikha ito ng tala ng pag-activate sa call stack. Pagkatapos, ang factorial (2) stack frame ay nilikha sa ibabaw ng stack at iba pa. Ang talaan ng pag-activate ay nagpapanatili ng impormasyon tungkol sa mga lokal na variable atbp. Sa tuwing tinatawag ang function, isang bagong hanay ng mga lokal na variable ang nalilikha sa tuktok ng stack. Maaaring pabagalin ng mga stack frame na ito ang bilis. Gayundin sa recursion, isang function ang tumatawag sa sarili nito. Ang pagiging kumplikado ng oras para sa isang recursive function ay matatagpuan sa bilang ng mga beses, ang function ay tinatawag. Ang pagiging kumplikado ng oras para sa isang function na tawag ay O(1). Para sa n bilang ng mga recursive na tawag, ang pagiging kumplikado ng oras ay O(n).
Ano ang Pag-ulit?
Ang Iteration ay isang bloke ng mga tagubilin na umuulit nang paulit-ulit hanggang sa maging totoo ang ibinigay na kundisyon. Maaaring makamit ang pag-ulit gamit ang "para sa loop", "do-while loop" o "while loop". Ang syntax ng "para sa loop" ay ang mga sumusunod.
para sa (pagsisimula; kundisyon; baguhin) {
// mga pahayag;
}
Figure 02: “para sa loop flow diagram”
Initialization step ang unang naisasagawa. Ang hakbang na ito ay upang ideklara at simulan ang loop control variable. Kung totoo ang kundisyon, ipapatupad ang mga pahayag sa loob ng mga kulot na brace. Isinasagawa ang mga pahayag na iyon hanggang sa maging totoo ang kundisyon. Kung mali ang kundisyon, mapupunta ang kontrol sa susunod na pahayag pagkatapos ng "para sa loop". Pagkatapos isagawa ang mga pahayag sa loob ng loop, ang kontrol ay mapupunta upang baguhin ang seksyon. Ito ay upang i-update ang loop control variable. Pagkatapos ay susuriin muli ang kundisyon. Kung totoo ang kundisyon, ipapatupad ang mga pahayag sa loob ng mga kulot na braces. Sa ganitong paraan umuulit ang "para sa loop."
Sa “while loop”, ang mga statement sa loob ng loop ay ipapatupad hanggang sa maging totoo ang kundisyon.
habang (kondisyon){
//statements
}
Sa loop na "do-while", sinusuri ang kundisyon sa dulo ng loop. Kaya, ang loop ay nagpapatupad ng kahit isang beses lang.
do{
//statements
} habang(kondisyon)
Program upang mahanap ang factorial ng 3 (3!) gamit ang iteration (“para sa loop”) ay ang mga sumusunod.
int main(){
intn=3, factorial=1;
inti;
for(i=1; i<=n; i++){
factorial=factoriali;
}
printf(“Ang factorial ay %d\n”, factorial);
return 0;
}
Ano ang Pagkakatulad sa Pagitan ng Recursion at Iteration?
- Parehong mga diskarte para malutas ang isang problema.
- Ang gawain ay maaaring lutasin alinman sa recursion o pag-ulit.
Ano ang Pagkakaiba sa pagitan ng Recursion at Iteration?
Recursion vs Iteration |
|
Ang Recursion ay isang paraan ng pagtawag sa isang function sa loob ng parehong function. | Ang Iteration ay isang bloke ng mga tagubilin na umuulit hanggang sa totoo ang ibinigay na kundisyon. |
Space Complexity | |
Ang pagiging kumplikado ng espasyo ng mga recursive program ay mas mataas kaysa sa mga pag-ulit. | Ang pagiging kumplikado ng espasyo ay mas mababa sa mga pag-ulit. |
Bilis | |
Mabagal ang pagpapatupad ng recursion. | Karaniwan, ang pag-ulit ay mas mabilis kaysa sa recursion. |
Kondisyon | |
Kung walang kundisyon ng pagwawakas, maaaring magkaroon ng walang katapusang recursion. | Kung hindi kailanman magiging false ang kundisyon, ito ay magiging isang walang katapusang pag-ulit. |
Stack | |
Sa recursion, ginagamit ang stack para mag-imbak ng mga lokal na variable kapag tinawag ang function. | Sa isang pag-ulit, hindi ginagamit ang stack. |
Code Readability | |
Mas nababasa ang recursive program. | Mas mahirap basahin ang iterative program kaysa sa recursive program. |
Buod – Recursion vs Iteration
Tinalakay ng artikulong ito ang pagkakaiba sa pagitan ng recursion at pag-ulit. Parehong maaaring magamit upang malutas ang mga problema sa programming. Ang pagkakaiba sa pagitan ng recursion at iteration ay ang recursion ay isang mekanismo upang tawagan ang isang function sa loob ng parehong function at iteration ito upang isagawa ang isang set ng mga tagubilin nang paulit-ulit hanggang sa ang ibinigay na kundisyon ay totoo. Kung malulutas ang isang problema sa recursive form, maaari din itong lutasin gamit ang mga pag-ulit.
I-download ang PDF Version ng Recursion vs Iteration
Maaari mong i-download ang PDF na bersyon ng artikulong ito at gamitin ito para sa mga offline na layunin ayon sa tala ng pagsipi. Paki-download ang bersyon ng PDF dito Pagkakaiba sa Pagitan ng Recursion at Pag-ulit