Tofauti Muhimu – Recursion vs Iteration
Kujirudia na Kurudia kunaweza kutumika kutatua matatizo ya upangaji. Mbinu ya kutatua tatizo kwa kutumia kujirudia au kurudiarudia inategemea njia ya kutatua tatizo. Tofauti kuu kati ya kujirudia na kurudia ni kwamba urejeshaji ni utaratibu wa kuita kitendakazi ndani ya kitendakazi sawa huku marudio ni kutekeleza seti ya maagizo mara kwa mara hadi hali iliyopewa iwe kweli. Kujirudia na Kurudia ni mbinu kuu za kutengeneza algoriti na uundaji wa programu za programu.
Kujirudia ni nini?
Kitendakazi kinapojiita ndani ya chaguo za kukokotoa, kinajulikana kama Recursion. Kuna aina mbili za kujirudia. Ni ujirudiaji usio na kikomo na urudiaji usio na mwisho. Urudiaji wa mwisho una hali ya kukomesha. Urudiaji usio na mwisho hauna hali ya kukomesha.
Urejeshaji unaweza kuelezewa kwa kutumia programu kukokotoa vipengele.
n!=n(n-1)!, ikiwa n>0
n!=1, kama n=0;
Rejea msimbo ulio hapa chini ili kukokotoa kipengele cha 3(3!=321).
mkuu () {
thamani ya ndani=factorial (3);
printf(“Kiwanda ni %d\n”, thamani);
rudi 0;
}
intfactorial (intn) {
kama(n==0) {
kurudi 1;
}
nyingine {
return n factorial(n-1);
}
}
Unapopiga simu factorial (3), chaguo hili la kukokotoa litaita factorial (2). Wakati wa kupiga simu factorial (2), kazi hiyo itaita factorial (1). Kisha factorial (1) itaita factorial (0). factorial (0) itarudi 1. Katika programu iliyo hapo juu, n==0 hali katika "kama block" ni hali ya msingi. Kulingana na Vile vile, utendaji kazi wa factorial huitwa tena na tena.
Vitendaji vya kujirudia vinahusiana na rafu. Katika C, programu kuu inaweza kuwa na kazi nyingi. Kwa hiyo, kuu () ni kazi ya kupiga simu, na kazi ambayo inaitwa na programu kuu ni kazi inayoitwa. Wakati kazi inaitwa, udhibiti hutolewa kwa kazi inayoitwa. Baada ya utekelezaji wa kazi kukamilika, udhibiti unarudi kwa kuu. Kisha programu kuu inaendelea. Kwa hivyo, huunda rekodi ya kuwezesha au fremu ya rafu ili kuendelea na utekelezaji.
Kielelezo 01: Kujirudia
Katika mpango ulio hapo juu, wakati wa kupiga simu factorial (3) kutoka kwa main, huunda rekodi ya kuwezesha katika rafu ya simu. Kisha, sura ya mrundikano wa ukweli (2) huundwa juu ya rafu na kadhalika. Rekodi ya kuwezesha huhifadhi taarifa kuhusu viambajengo vya ndani n.k. Kila mara chaguo la kukokotoa linapoitwa, seti mpya ya vigeu vya ndani huundwa juu ya rafu. Fremu hizi za rafu zinaweza kupunguza kasi. Vivyo hivyo katika kujirudia, chaguo la kukokotoa hujiita. Ugumu wa wakati kwa kazi ya kujirudia hupatikana kwa idadi ya nyakati, kazi inaitwa. Utata wa saa kwa simu moja ya chaguo za kukokotoa ni O(1). Kwa n nambari ya simu zinazojirudia, utata wa saa ni O(n).
Kurudia ni nini?
Marudio ni safu ya maagizo ambayo hurudiwa tena na tena hadi sharti lililotolewa liwe kweli. Kurudia kunaweza kupatikana kwa kutumia "kwa kitanzi", "kufanya-wakati kitanzi" au "wakati kitanzi". sintaksia ya "for loop" ni kama ifuatavyo.
kwa (kuanzisha; sharti; rekebisha) {
// kauli;
}
Kielelezo 02: “kwa mchoro wa mtiririko wa kitanzi”
Hatua ya uanzishaji itatekelezwa kwanza. Hatua hii ni kutangaza na kuanzisha vigezo vya udhibiti wa kitanzi. Ikiwa hali ni kweli, taarifa zilizo ndani ya brashi zilizopinda hutekelezwa. Kauli hizo hutekelezwa hadi hali itakapokuwa kweli. Ikiwa hali ni ya uwongo, udhibiti huenda kwa taarifa inayofuata baada ya "kwa kitanzi". Baada ya kutekeleza taarifa ndani ya kitanzi, udhibiti huenda kurekebisha sehemu. Ni kusasisha utofauti wa udhibiti wa kitanzi. Kisha hali hiyo inaangaliwa tena. Ikiwa hali hiyo ni ya kweli, taarifa zilizo ndani ya braces curly zitatekelezwa. Kwa njia hii neno la "kwa kitanzi" linarudia.
Katika “wakati kitanzi”, taarifa zilizo ndani ya kitanzi hutekelezwa hadi hali iwe kweli.
wakati (hali){
//kauli
}
Katika kitanzi cha "fanya-wakati", hali huangaliwa mwishoni mwa kitanzi. Kwa hivyo, kitanzi kinatekelezwa angalau mara moja.
fanya{
//kauli
} wakati(hali)
Programu ya kupata kipengele cha 3 (3!) kwa kutumia marudio (“kwa kitanzi”) ni kama ifuatavyo.
int main(){
intn=3, factorial=1;
int;
kwa(i=1; i<=n; i++){
factorial=factoriali;
}
printf(“Factorial ni %d\n”, factorial);
rudi 0;
}
Je, Kuna Ufanano Gani Kati ya Kujirudia na Kurudia?
- Zote ni mbinu za kutatua tatizo.
- Jukumu linaweza kutatuliwa kwa kujirudia au kurudia.
Nini Tofauti Kati ya Kujirudia na Kurudia?
Recursion vs Iteration |
|
Recursion ni mbinu ya kuita kitendakazi ndani ya kitendakazi sawa. | Marudio ni safu ya maagizo ambayo hurudiwa hadi sharti lililotolewa liwe kweli. |
Utata wa Nafasi | |
Utata wa nafasi wa programu zinazojirudia ni kubwa kuliko marudio. | Utata wa nafasi ni mdogo katika marudio. |
Kasi | |
Utekelezaji wa kujirudia ni wa polepole. | Kwa kawaida, kurudia ni haraka kuliko kujirudia. |
Hali | |
Ikiwa hakuna sharti la kusitishwa, kunaweza kuwa na urudiaji usio na kikomo. | Ikiwa hali haitawahi kuwa uongo, itakuwa ni marudio yasiyo na kikomo. |
Rafu | |
Katika kujirudia, rafu hutumika kuhifadhi vibadilishi vya ndani wakati chaguo la kukokotoa linapoitwa. | Kwa kurudia, rafu haitumiki. |
Kusomeka kwa Msimbo | |
Programu ya kujirudia inasomeka zaidi. | Programu ya kurudia ni ngumu kusoma kuliko programu inayojirudia. |
Muhtasari – Recursion vs Iteration
Makala haya yalijadili tofauti kati ya kujirudia na kurudia. Zote mbili zinaweza kutumika kutatua matatizo ya programu. Tofauti kati ya kujirudia na kurudia ni kwamba urejeshaji ni utaratibu wa kuita kazi ndani ya chaguo la kukokotoa sawa na kuirudia ili kutekeleza seti ya maagizo mara kwa mara hadi hali iliyopewa iwe kweli. Ikiwa tatizo linaweza kutatuliwa kwa njia ya kujirudia, linaweza pia kutatuliwa kwa kutumia marudio.
Pakua Toleo la PDF la Recursion vs Iteration
Unaweza kupakua toleo la PDF la makala haya na uitumie kwa madhumuni ya nje ya mtandao kulingana na dokezo la manukuu. Tafadhali pakua toleo la PDF hapa Tofauti Kati ya Kujirudia na Kurudia