Wakambobatwa here mukutenderera kunoratidzika kunge kusingagumi apo dambudziko rinoramba richiita zvidimbu zvidiki?
Kana zvakadaro, ungave wakasvika panyika inonakidza yekudzokorora. Kunyange zvazvo zvingaita sezvinonetsa kunzwisisa, usanetseka! Mune ino post, tichaenda rwendo runonakidza kuti tidzidze nezve mhando dzedzokororo.
Saka sunga bhanhire apo isu tichiongorora nzira dzakawanda dzinodzokororwa. Gadzirira kupinda munzvimbo inonakidza yekudzokorora uye kuona kugona kwayo kunoshamisa mukugadzirisa nyaya dzakaoma.
Chii Chaizvo Chinonzi Recursions?
Mumashoko ekutanga, recursion isimba rekuronga dhizaini rinosanganisira basa rinozvidaidza pacharo panguva yekuuraya. Zvakafanana nokutarisa mugirazi uye kuona mufananidzo mukati memufananidzo, zvichikonzera kutenderera kwekuzvimiririra.
Isu tinokwanisa kugadzirisa nyaya hombe tichishandisa kudzokorora nekuzvipatsanura kuva madiki, anogoneka maproblems.
Zvakafanana nekubatanidza jigsaw, apo chimedu chinobatanidza kune zvimwe zvikamu kuti chibudise mufananidzo uzere. Recursion inotibvumira kugadzirisa nyaya nenzira inoyevedza uye inoshanda nekudzokorora seti imwechete yemirairo ine akasiyana mapipu.
1-Direct Recursion
Direct recursion ndiyo inonyanya kukosha mhando yekudzokorora, umo basa rinozvidaidza rakananga. Zvinosanganisira kupatsanura dambudziko rine dambudziko kuita madiki maproblems kusvika base kesi yawanikwa, izvo zvinotungamira mukugumiswa.
Iyo recursive function inozvidaidza neyakasiyana-siyana, zvichiita kuti kuitwa kweiyo imwechete seti yemirairo idzokororwe. Kudeedza kwega kwega kunovaka pane yekutanga, zvishoma nezvishoma ichiswedera kune base kesi iyo inokonzeresa kudzokororwa kupera.
Ngatitarisei muenzaniso uyu.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
Chikwata:
5
4
3
2
1
2-Indirect Recursion
Indirect recursion inowedzera inonakidza twist kune inodzokororwa nzira. Mukupesana nekudzokorodza kwakananga, uko kunosanganisira basa rinozvidaidza pachena, kudzokororwa kusinganangi kunosanganisira ketani yebasa rekufona.
Rimwe basa rinodaidza rimwe, iro rinogona kuzodaidza basa rekutanga kana chero rimwe basa rinozodzokera kune rekutanga. Iyi yewebhu yakabatana yebasa inofona inoburitsa dhanzi rinonakidza umo mabasa akati wandei anobatana kugadzirisa dambudziko.
muenzaniso:
def function_A(n):
if n > 0:
print("A:", n)
function_B(n - 1)
def function_B(n):
if n > 0:
print("B:", n)
function_A(n - 1)
function_A(3)
Chikwata:
A: 3
B: 2
A: 1
3-Linear Recursion
Funga nezverwendo uchidzika nenzira yakatwasuka, nhanho imwe panguva, kusvika wasvika pachinangwa chako. Iyi inoteedzana tekinoroji inomisikidzwa nemutsara kudzokorora, umo basa rinoita imwechete inodzokororwa kufona mune yega yega basa iteration.
Nekufona kwega kwega kudzokororwa, iyo inodzokororwa inoswedera pedyo nebhesi kesi nekudzikisa saizi yenyaya. Inoenderera nenzira yakajeka uye yakatsetseka, ichigadzirisa maproblems rimwe chete panguva kusvika mhinduro yekupedzisira yasvikwa.
muenzaniso:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
Chikwata:
120
4-Muti Recursion
Kana basa richiita mabhindauko akawanda ekudzokorodza mafoni, isu tinopinda munyika yemuti recursion. Basa mukudzokororwa kwemuti rinogadzira akawanda anodzokorodza mafoni, imwe neimwe inogadzirisa yakaparadzana subproblem, sezvinoita matavi emuti.
Ichi chimiro chebazi chinobvumira kuongororwa panguva imwe chete yenzira dzinoverengeka, zvinobudirira kuputsa nyaya dzakaoma kuita zviduku, zvinodyidzana zvikamu.
muenzaniso:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
Chikwata:
8
5-Nested Recursion
Nested recursion inowedzera inonakidza dhigirii rekuomarara kune inodzokororwa yakasikwa. Mune iyi fomu yekudzokorodza, basa rinobatanidza runhare runodzokororwa senharo mukati meimwe runhare runodzokororwa.
Iyo yemukati inodzokorodza call inoita pane kukosha kunoenderana nekunze kudzokororwa kufona. Iko kuomarara kunokura nekudeedzera kwega kwega kwakaiswa, zvichiguma nemaitiro anokatyamadza emadendere anodzokororwa mafoni.
muenzaniso:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
Mhinduro:
91
6-Muswe Recursion
Muswe kudzokororwa inzira yekugonesa yekudzokorodza algorithms inogona kuvandudza mashandiro avo. Iyo inodzokororwa kufona inoratidzika seyekupedzisira chiito chebasa rine muswe kudzokororwa, kugadzira.
Nekuti hapana mashandiro asara achitevera kudzokororwa kufona, mugadziri kana muturikiri anogona kurerutsa kudzokorora nekuitsiva nekusvetuka kuri nyore.
Iyi nzira yekusimudzira, inozivikanwa semuswe kufona optimization, inoderedza chinodiwa kune yega yega inodzokororwa kufona kuchengetedza stack furemu, zvichikonzera kukwidziridzwa kumhanya uye kuderera kwekushandisa ndangariro.
muenzaniso:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
Kunze:
120
7-Isina-Muswe Recursion
Mukupesana nekudzokororwa kwemuswe, kusiri-muswe kudzokororwa kunosanganisira mamwe mabasa anoitwa mushure mekudzokororwa kufona mukati mebasa. Pamberi pezvimwe zviito zvingaitwa, imwe neimwe inodzokororwa kufona kunofanirwa kupedzisa uye kudzoka.
Nekuda kweizvozvo, kudzamara iyo base kesi yasvikwa uye kudzokororwa kwapera, murwi wemabasa akatanhamara anochengetwa. Non-tail recursion inowanzoshandisa ndangariro yakawanda uye haina kunyatso shanda pane kudzokorodza muswe, asi ichiri chishandiso chinobatsira pakugadzirisa nyaya dzakasiyana.
muenzaniso:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
Chikwata:
15
Putira
Recursion ipfungwa inonakidza mukuronga. Zvinotibvumira kugadzirisa matambudziko akaomarara nenzira yekudzokorodza, yekuzvimiririra.
Inopa nzira yakasarudzika yekufunga nezve uye kugadzirisa matambudziko, kuaputsa kuita madiki, anonyanya kudzoreka chunks. Paunenge uchishanda nekudzokorora, zvisinei, zvakakosha kushandisa kuterera kune mamwe mapoinzi.
Iwe unofanirwa kuona akakodzera base makesi anobvumira kudzokorora kupera. Kana ivo vasipo, basa racho rinogona kuramba richizvidaidza nekusingaperi.
Chechipiri, zvichienderana nemamiriro ezvinhu aripo, kusarudza rudzi rwakakodzera rwekudzokorodza kunogona kutungamira kune mamwe magadzirirwo uye anoyevedza mhinduro. Edza kutsvaga izvo zvinoshanda zvakanyanya kune dambudziko riri muruoko. Paunenge uchishanda nehudzamu hwakakura hwekudzokororwa, ziva njodzi dzinogona kuitika senge stack mafashama.
Leave a Reply