Kodi munayamba mwagwidwapo mumkombero wowoneka ngati wosatha pomwe vuto limapitilira kukhala tizidutswa tating'ono?
Ngati ndi choncho, mwina munakumanapo ndi dziko lochititsa chidwi la kubwerezabwereza. Ngakhale zingawoneke kukhala zovuta kumvetsetsa, osadandaula! Mu positi iyi, tiyenda ulendo wosangalatsa kuti tiphunzire za mitundu yobwerezabwereza.
Chifukwa chake, tsatirani malangizo omwe ali pansipa kuti mudziwe zambiri. Konzekerani kulowa mu gawo losangalatsa la kubwereza ndikuwona kuthekera kwake kodabwitsa pakuthana ndi zovuta.
Kodi Recursions Ndi Chiyani Kwenikweni?
M'mawu oyambira, recursion ndi njira yamphamvu yopangira mapulogalamu yomwe imaphatikizapo ntchito yodzitcha yokha panthawi yakuchita. Zili ngati kuyang'ana pagalasi ndikuwona chithunzi m'kati mwa fano, zomwe zimapangitsa kuti muyambe kudziwonetsera nokha.
Titha kuthana ndi zovuta zazikulu pogwiritsa ntchito kubwereza pozigawa m'mavuto ang'onoang'ono, otha kutheka.
Zili ngati kuyika jigsaw, pomwe chidutswa chimodzi chimalumikizana ndi mbali zina kuti chipange chithunzi chonse. Recursion imatilola kuti tithane ndi zovuta m'njira yabwino komanso yabwino pobwereza malangizo omwewo ndi zolowetsa zosiyanasiyana.
1-Kubwereza Kwachindunji
Direct recursion ndi mtundu wofunikira kwambiri wobwereza, momwe ntchito imadzitcha yokha mwachindunji. Zimaphatikizapo kugawa vuto kukhala zovuta zazing'ono mpaka vuto loyambira litakwaniritsidwa, zomwe zimatsogolera kuthetsedwa.
Ntchito yobwerezabwereza imadzitcha yokha ndi zolowetsa zosiyanasiyana, zomwe zimathandiza kuti ndondomeko yofanana ya malangizo ibwerezedwe. Kupemphera kulikonse kumakhazikika pa choyambirira, pang'onopang'ono kuyandikira nkhani yoyambira yomwe imapangitsa kuti kubwereza kutha.
Tiyeni tione chitsanzo ichi.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
Zotsatira:
5
4
3
2
1
2-Kubwereza molunjika
Kubwereza kosalunjika kumawonjezera kupotoza kochititsa chidwi kunjira yobwerezabwereza. Mosiyana ndi kubwereza kwachindunji, komwe kumaphatikizapo ntchito yodziyitanira yokha, kubwereza kosalunjika kumaphatikizapo maulendo angapo a ntchito.
Ntchito imodzi imayitana ina, yomwe imatha kuyitcha ntchito yoyambirira kapena ntchito ina iliyonse yomwe imabwereranso ku choyambirira. Ukonde wolumikizana wolumikizanawu umatulutsa kuvina kosangalatsa momwe magwiridwe antchito angapo amagwirira ntchito kukonza vuto.
Chitsanzo:
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)
Zotsatira:
A: 3
B: 2
A: 1
3-Linear Recursion
Ganizirani za ulendo wodutsa njira yowongoka, sitepe imodzi panthawi, mpaka mutafika pa cholinga chanu. Njira yotsatizana iyi imaphatikizidwa ndi kubwereza kwa mzere, momwe ntchito imachita kuyimba kumodzi kobwerezabwereza mu ntchito iliyonse.
Ndi kuyimba kulikonse kobwerezabwereza, njira yobwerezabwereza imayandikira pafupi ndi maziko pochepetsa kukula kwake. Zimapitirira momveka bwino komanso motsatira mzere, ndikuthetsa mavuto ang'onoang'ono limodzi ndi nthawi mpaka yankho lomaliza likupezeka.
Chitsanzo:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
Zotsatira:
120
4-Kubwerera kwa Mtengo
Pamene ntchito nthambi mu angapo recursive mafoni, ife kulowa dziko la mtengo recursion. Ntchito yobwerezanso mitengo imapanga mafoni ambiri obwerezabwereza, omwe amathetsa vuto linalake, monga momwe nthambi za mtengo zimachitira.
Mapangidwe a nthambiwa amalola kufufuza nthawi imodzi kwa njira zingapo, ndikuphwanya bwino nkhani zovuta kukhala zigawo zing'onozing'ono, zogwirizana.
Chitsanzo:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
Zotsatira:
8
5-Nested Recursion
Nested recursion imawonjezera kusinthasintha kosangalatsa ku chilengedwe chobwereranso. Munjira iyi yobwereza, ntchito imaphatikiza kuyimbanso kobwereza ngati mkangano mkati mwa kuyimba kwinanso.
Kuitana kwamkati kobwerezabwereza kumachita pamtengo womwe umadalira kuyimba kwakunja kobwerezabwereza. Kuvuta kwake kumakula ndi kupembedzera kulikonse komwe kumapangidwa, kumafika pachimake chochititsa chidwi cha mafoni obwerezabwereza.
Chitsanzo:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
Zotsatira:
91
6-Kubwerera mchira
Kubwereza kwa mchira ndi njira yokwaniritsira ma algorithms obwerezabwereza omwe amatha kusintha magwiridwe antchito awo. Kuyitanira kobwerezabwereza kumawoneka ngati chochita chomaliza cha ntchito yokhala ndi kubwereza kwa mchira, kupanga.
Chifukwa palibe ntchito zotsogola zomwe zikutsatira kuyimba kobwerezabwereza, wophatikiza kapena womasulira atha kufewetsa kubwereza poyisintha ndikudumpha kosavuta.
Kukhathamiritsa kumeneku, komwe kumadziwika kuti kukhathamiritsa kuyimba kwa mchira, kumachepetsa kufunikira kwa kuyimba kwina kulikonse kuti asunge chimango, zomwe zimapangitsa kuti liwiro liziyenda bwino komanso kukumbukira pang'ono.
Chitsanzo:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
Kunja:
120
7-Kubwereza Zopanda Mchira
Mosiyana ndi kubwereza kwa mchira, kubwereza kosakhala kwa mchira kumaphatikizapo ntchito zowonjezera zomwe zimachitika pambuyo pa kuyitana kobwerezabwereza mkati mwa ntchito. Zochita zina zisanachitike, kuyimbanso kwina kulikonse kumayenera kumaliza ndikubwerera.
Zotsatira zake, mpaka mlandu woyambira wafika ndipo kubwereza kutha, mulu wa ntchito zabwino zimasungidwa. Kubwereza kopanda mchira nthawi zambiri kumagwiritsa ntchito kukumbukira kwambiri komanso sikuthandiza kwambiri kuposa kubwereza mchira, komabe ndi chida chothandizira kuthana ndi zovuta zosiyanasiyana.
Chitsanzo:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
Zotsatira:
15
Womba mkota
Recursion ndi lingaliro lochititsa chidwi pamapulogalamu. Zimatithandiza kuthana ndi mavuto ovuta m'njira yobwerezabwereza, yodziwonetsera tokha.
Limapereka njira yosiyana yoganizira ndi kuthetsa mavuto, kuwagawa m'magulu ang'onoang'ono, otha kutheka. Pogwira ntchito yobwerezabwereza, ndikofunikira kugwiritsa ntchito kulabadira mfundo zina.
Muyenera kuzindikira milandu yoyenera yomwe imalola kuti kubwereza kutha. Ngati palibe, ntchitoyi ikhoza kupitiriza kudzitcha yokha kwamuyaya.
Chachiwiri, kutengera zomwe zikuchitika, kusankha mtundu woyenera wobwereza kungapangitse mayankho ogwira mtima komanso okongola. Yesetsani kupeza zomwe zimagwira bwino vuto lomwe lili m'manja. Pogwira ntchito ndi kuya kwakukulu kobwerezabwereza, dziwani zoopsa zomwe zingakhalepo monga kusefukira kwa ma stack.
Siyani Mumakonda