Koj puas tau raug ntes nyob rau hauv ib lub voj voog zoo li tsis muaj qhov kawg uas qhov teeb meem txuas mus rau hauv cov khoom me me?
Yog tias muaj, tej zaum koj yuav tau los rau hauv lub ntiaj teb enthralling ntawm recursion. Txawm hais tias nws yuav zoo li nyuaj rau kev nkag siab, tsis txhob txhawj! Hauv tsab xov xwm no, peb yuav mus rau kev nthuav dav kom kawm txog hom kev rov ua dua tshiab.
Yog li buckle li thaum peb tshawb nrhiav ntau txoj hauv kev recursive. Npaj nkag mus rau hauv lub ntiaj teb fascinating ntawm recursion thiab saib nws lub peev xwm zoo kawg li hauv kev daws teeb meem nyuaj.
Dab tsi yog Recursions?
Hauv cov lus yooj yim, recursion yog cov txheej txheem ua haujlwm muaj zog uas suav nrog kev ua haujlwm hu nws tus kheej thaum ua tiav. Nws zoo li ntsia rau hauv daim iav thiab pom cov duab hauv ib daim duab, ua rau lub voj voog ntawm tus kheej.
Peb tuaj yeem daws cov teeb meem loj uas siv recursion los ntawm kev faib lawv mus rau hauv cov teeb meem me me, tswj tau ntau dua.
Nws zoo ib yam li muab tso ua ke ib qho jigsaw, qhov twg ib daim txuas mus rau lwm qhov chaw los tsim ib daim duab tag nrho. Recursion tso cai rau peb los daws cov teeb meem hauv kev ua kom zoo nkauj thiab ua tau zoo los ntawm kev rov ua cov lus qhia tib yam nrog ntau yam khoom siv.
1-Direct Recursion
Direct recursion yog hom yooj yim tshaj plaws ntawm recursion, uas muaj nuj nqi hu nws tus kheej ncaj qha. Nws suav nrog kev faib cov teeb meem teeb meem rau hauv cov teeb meem me me kom txog thaum lub hauv paus txheej txheem tiav, uas ua rau kev txiav tawm.
Lub luag haujlwm recursive hu nws tus kheej nrog ntau yam inputs, ua rau kev ua tiav ntawm tib cov lus qhia kom rov ua dua. Txhua daim ntawv thov tsim nyob rau hauv ib qho ua ntej, nce mus ze rau lub hauv paus rooj plaub uas ua rau rov qab los xaus.
Cia peb tshawb xyuas qhov piv txwv no.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
Tso zis:
5
4
3
2
1
2-Indirect Recursion
Indirect recursion ntxiv ib qho intriguing twist rau txoj kev recursive. Nyob rau hauv sib piv rau ncaj recursion, uas muaj xws li ib tug muaj nuj nqi qhia meej meej hu nws tus kheej, indirect recursion muaj xws li ib tug saw ntawm functioning hu.
Ib txoj haujlwm hu rau lwm tus, uas tuaj yeem hu rau qhov tseem ceeb lossis lwm yam haujlwm uas thaum kawg rov qab mus rau qhov qub. Qhov kev sib txuas ntawm lub vev xaib ntawm kev ua haujlwm hu ua qhov ua las voos uas muaj ntau lub luag haujlwm sib koom tes los kho qhov teeb meem.
Piv txwv li:
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)
Tso zis:
A: 3
B: 2
A: 1
3-Linear Recursion
Xav txog txoj kev taug kev ncaj nraim, ib kauj ruam ntawm ib lub sijhawm, kom txog thaum koj tuaj txog ntawm koj lub hom phiaj. Cov txheej txheem sequential no yog embodied los ntawm linear recursion, nyob rau hauv uas ib tug muaj nuj nqi ua ib tug recursive hu nyob rau hauv txhua txhua muaj nuj nqi iteration.
Nrog rau txhua qhov recursive hu, cov txheej txheem recursive txav los ze zog rau ib rooj plaub los ntawm kev txo qhov teeb meem loj. Nws pib ua kom meej thiab tawm, daws cov teeb meem me me ib zaug kom txog rau thaum cov lus teb kawg.
Piv txwv li:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
Tso zis:
120
4- Tsob Ntoo Rov Los
Thaum muaj kev ua haujlwm ceg mus rau ntau qhov kev hu rov qab, peb nkag mus rau hauv lub ntiaj teb ntawm tsob ntoo recursion. Ib qho kev ua haujlwm hauv tsob ntoo recursion generates ntau recursive hu, txhua yam uas daws tau ib tug cais subproblem, ib yam li cov ceg ntoo ua.
Cov qauv kev ua haujlwm no tso cai rau kev tshawb nrhiav ib txhij ntawm ntau txoj hauv kev, ua kom cov teeb meem nyuaj rau hauv cov khoom me me, sib cuam tshuam.
Piv txwv li:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
Tso zis:
8
5-Nested Recursion
Nested recursion ntxiv qhov kev txaus siab ntawm qhov nyuaj rau lub ntiaj teb recursive. Nyob rau hauv daim ntawv no ntawm recursion, ib tug muaj nuj nqi koom ib tug recursive hu ua ib qho kev sib cav nyob rau hauv lwm recursive hu.
Lub sab hauv recursive hu ua rau tus nqi uas yog nyob ntawm sab nraud recursive hu. Qhov nyuaj loj hlob nrog txhua qhov kev thov nested, culminating nyob rau hauv ib tug intriguing qauv ntawm nested recursive hu.
Piv txwv li:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
Tshwm sim:
91
6-Txoj Kev Rov Qab Los
Tail recursion yog cov txheej txheem optimization rau recursive algorithms uas tuaj yeem txhim kho lawv cov kev ua tau zoo. Lub recursive hu tshwm raws li qhov kawg nkaus ntawm kev ua haujlwm nrog tus Tsov tus tw recursion, ua.
Vim tias tsis muaj kev ua haujlwm zoo tom qab hu rov qab, tus neeg sau ntawv lossis tus neeg txhais lus tuaj yeem ua kom yooj yim rau kev rov ua dua los ntawm kev hloov nws nrog kev dhia yooj yim.
Qhov no optimization mus kom ze, hu ua tus Tsov tus tw optimization, txo qhov yuav tsum tau rau txhua recursive hu kom khaws ib pawg thav duab, ua rau txhim khu kev ceev thiab kev siv lub cim xeeb.
Piv txwv li:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
Tawm tawm:
120
7-Txoj kev rov qab los
Nyob rau hauv sib piv rau tus Tsov tus tw recursion, uas tsis yog-tail recursion muaj ntxiv cov dej num ua tom qab lub recursive hu nyob rau hauv ib tug muaj nuj nqi. Ua ntej yuav ua li cas ntxiv, txhua qhov kev hu rov qab yuav tsum ua kom tiav thiab rov qab los.
Raws li qhov tshwm sim, kom txog rau thaum cov ntaub ntawv hauv paus tau mus txog thiab qhov rov ua tiav, ib pawg ntawm cov haujlwm tseem ceeb tau khaws cia. Non-tail recursion nquag siv ntau lub cim xeeb thiab tsis tshua muaj txiaj ntsig zoo dua li tus Tsov tus tw rov qab, tab sis nws tseem yog ib qho cuab yeej pab daws teeb meem ntau yam.
Piv txwv li:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
Tso zis:
15
Qhwv Sau
Recursion yog ib lub tswv yim zoo hauv kev ua haujlwm. Nws tso cai rau peb los daws cov teeb meem nyuaj hauv kev rov ua dua, kev xa tus kheej.
Nws muaj txoj hauv kev sib txawv ntawm kev xav txog thiab daws cov teeb meem, rhuav tshem lawv mus rau hauv me me, tswj tau ntau dua. Thaum ua hauj lwm nrog recursion, txawm li cas los xij, nws yog ib qho tseem ceeb uas yuav tsum tau siv kev xyuam xim rau qee cov ntsiab lus.
Koj yuav tsum txheeb xyuas cov xwm txheej tsim nyog uas tso cai rau kev rov ua kom tiav. Yog tias lawv tsis nyob, qhov haujlwm tseem yuav hu nws tus kheej mus ib txhis.
Qhov thib ob, raws li qhov xwm txheej ntawm tes, xaiv qhov tsim nyog ntawm kev rov ua dua tuaj yeem ua rau muaj txiaj ntsig zoo dua thiab muaj txiaj ntsig zoo. Sim nrhiav qhov ua haujlwm zoo tshaj plaws rau qhov teeb meem ntawm tes. Thaum ua hauj lwm nrog qhov loj heev recursion qhov tob, yuav tsum paub txog tej yam txaus ntshai xws li pawg overflow.
Sau ntawv cia Ncua