An deach do ghlacadh a-riamh ann an cearcall a tha coltach gun chrìoch far a bheil duilgheadas a’ leantainn air adhart gu pìosan nas lugha?
Ma tha, is dòcha gu bheil thu air tighinn gu saoghal inntinneach ath-chuairteachaidh. Ged a dh'fhaodadh coltas gu bheil e doirbh a thuigsinn, na gabh dragh! Anns an dreuchd seo, thèid sinn air turas inntinneach gus ionnsachadh mu sheòrsan ath-chuairtean.
Mar sin bucall suas fhad ‘s a bhios sinn a’ sgrùdadh grunn dhòighean ath-chuairteach. Dèan ullachadh airson a dhol a-steach don raon inntinneach ath-chuairteachaidh agus coimhead air a chomas iongantach ann a bhith a’ fuasgladh chùisean toinnte.
Dè dìreach a th’ ann an Ath-chuairtean?
Ann am faclan bunaiteach, tha ath-chuairteachadh na dhòigh prògramadh cumhachdach a tha a’ toirt a-steach gnìomh a tha ga ghairm fhèin aig àm cur gu bàs. Tha e coltach ri bhith a’ coimhead a-steach do sgàthan agus a’ faicinn ìomhaigh taobh a-staigh ìomhaigh, a’ leantainn gu cearcall fèin-iomraidh.
Is urrainn dhuinn dèiligeadh ri cùisean mòra le bhith a’ cleachdadh ath-chuairtean le bhith gan roinn ann an duilgheadasan nas lugha agus nas làimhseachail.
Tha e coltach ri bhith a’ cur jigsaw ri chèile, far a bheil aon phìos a’ ceangal ri pàirtean eile gus dealbh slàn a dhèanamh. Leigidh ath-chuairteachadh leinn cùisean fhuasgladh ann an dòigh eireachdail agus èifeachdach le bhith ag ath-aithris an aon sheata de stiùiridhean le diofar chuir-a-steach.
1 - Ath-chuairteachadh dìreach
Is e ath-chuairteachadh dìreach an seòrsa ath-chuairteachaidh as bunaitiche, anns a bheil gnìomh ga ghairm fhèin gu dìreach. Tha e a’ toirt a-steach a bhith a’ roinn duilgheadas trioblaideach ann an fo-dhuilgheadasan nas lugha gus an tèid cùis bhunaiteach a choileanadh, a thig gu crìch.
Bidh an gnìomh ath-chuairteach ga ghairm fhèin le diofar chuir a-steach, a’ comasachadh an aon sheata de stiùiridhean a chuir an gnìomh a-rithist. Bidh gach gairm a’ togail air an fhear a bh’ ann roimhe, mean air mhean a’ tighinn faisg air a’ chùis bhunaiteach a dh’ adhbhraicheas tilleadh gu crìch.
Feuch an toir sinn sùil air an eisimpleir seo.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
Toraidhean:
5
4
3
2
1
2 - Ath-chuairteachadh neo-dhìreach
Bidh ath-chuairteachadh neo-dhìreach a’ cur tionndadh inntinneach ris an t-slighe ath-chuairteach. Eu-coltach ri ath-chuairteachadh dìreach, a tha a’ toirt a-steach gnìomh ga ghairm fhèin gu soilleir, tha ath-chuairteachadh neo-dhìreach a’ toirt a-steach sreath de ghairmean gnìomh.
Bidh aon ghnìomh a’ gairm fear eile, a dh’ fhaodas an uairsin an gnìomh tùsail no gnìomh sam bith eile a ghairm a thèid air ais chun fhear thùsail mu dheireadh. Bidh an lìon eadar-cheangailte seo de ghairmean gnìomh a’ toirt a-mach dannsa inntinneach anns am bi grunn ghnìomhan a’ co-obrachadh gus duilgheadas a cheartachadh.
Mar eisimpleir:
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)
Toraidhean:
A: 3
B: 2
A: 1
Ath-chuairteachadh 3-sreathach
Beachdaich air turas sìos slighe dhìreach, aon cheum aig aon àm, gus an ruig thu an amas agad. Tha an dòigh sreathach seo air a ghabhail a-steach le ath-chuairteachadh sreathach, anns am bi gnìomh a’ coileanadh aon ghairm ath-chuairteach anns gach tionndadh gnìomh.
Le gach gairm ath-chuairteach, bidh am pròiseas ath-chuairteachaidh a’ gluasad nas fhaisge air cùis bhunaiteach le bhith a’ lughdachadh meud na cùise. Bidh e a’ dol air adhart ann an dòigh shoilleir agus sreathach, a’ fuasgladh dhuilgheadasan aon aig aon àm gus an ruigear am freagairt mu dheireadh.
Mar eisimpleir:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
Toraidhean:
120
Ath-chuairteachadh 4-craobh
Nuair a thèid gnìomh a-steach do ghrunn ghairmean ath-chuairteachaidh, bidh sinn a’ dol a-steach do shaoghal ath-chuairteachaidh chraobhan. Bidh gnìomh ann an ath-chuairteachadh chraobhan a’ gineadh mòran ghairmean ath-chuairteach, agus gach aon dhiubh a’ fuasgladh fo-cheist fa leth, dìreach mar a bhios geugan craoibhe a’ dèanamh.
Tha an structar branrach seo a’ ceadachadh sgrùdadh aig an aon àm air grunn shlighean, gu h-èifeachdach a’ briseadh sìos chùisean toinnte gu pàirtean nas lugha, eadar-cheangailte.
Mar eisimpleir:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
Toraidhean:
8
5-Nested Recursion
Tha ath-chuairteachadh neadachaidh a’ cur ìre inntinneach de iom-fhillteachd ris a’ chruinne-cè ath-chuairteach. Anns an t-seòrsa ath-chuairteachaidh seo, tha gnìomh a’ toirt a-steach gairm ath-chuairteach mar argamaid taobh a-staigh gairm ath-chuairteach eile.
Bidh an gairm ath-chuairteachaidh a-staigh ag obair air luach a tha an urra ris a’ ghairm ath-chuairteachaidh a-muigh. Bidh an iom-fhillteachd a’ fàs le gach ionnsaigh neadachaidh, a’ tighinn gu crìch le pàtran inntinneach de ghlaodhan ath-chuairteachaidh neadachaidh.
Mar eisimpleir:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
Toradh:
91
6-Tail Recursion
Tha ath-chuairteachadh earbaill na dhòigh optimization airson algorithms ath-chuairteach as urrainn an coileanadh adhartachadh. Tha an gairm ath-chuairteach a 'nochdadh mar an gnìomh mu dheireadh de ghnìomh le ath-chuairteachadh earbaill, a' dèanamh.
Leis nach eil gnìomhachd sam bith ri dhèanamh às deidh a’ ghairm ath-chuairteach, faodaidh an neach-cruinneachaidh no an eadar-theangair an ath-chuairt a dhèanamh nas sìmplidhe le bhith a’ cur leum sìmplidh na àite.
Tha an dòigh-obrach optimization seo, ris an canar optimization call earball, a’ lughdachadh an riatanas airson gach gairm ath-chuairteach frèam stac a chumail, a ’leantainn gu astar nas fheàrr agus cleachdadh cuimhne nas ìsle.
Mar eisimpleir:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
A-mach:
120
7 - Ath-chuairteachadh Neo-Tail
An coimeas ri ath-chuairteachadh earbaill, tha ath-chuairteachadh neo-earbaill a’ toirt a-steach gnìomhan a bharrachd air an coileanadh às deidh a’ ghairm ath-chuairteach taobh a-staigh gnìomh. Mus tèid gnìomhan sam bith eile a dhèanamh, feumaidh gach gairm ath-chuairteachaidh a chrìochnachadh agus a thilleadh.
Mar thoradh air an sin, gus an ruigear a’ chùis bhunaiteach agus an t-ath-chuairt a’ tighinn gu crìch, thathas a’ cumail suas stac de ghnìomhachd gun samhail. Bidh ath-chuairteachadh neo-earbaill gu tric a’ cleachdadh barrachd cuimhne agus chan eil e cho èifeachdach ri ath-chuairteachadh earbaill, ach tha e fhathast na inneal cuideachail airson dèiligeadh ri grunn chùisean.
Mar eisimpleir:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
Toraidhean:
15
Còmhdaich
Tha ath-chuairteachadh na bhun-bheachd inntinneach ann am prògramadh. Leigidh e leinn dèiligeadh ri duilgheadasan toinnte ann an dòigh ath-chuairteach, fèin-iomraidh.
Tha e a’ tabhann dòigh shònraichte air smaoineachadh agus fuasgladh cheistean, gan briseadh sìos gu pìosan nas lugha agus nas làimhseachail. Nuair a bhios tu ag obair le ath-chuairteachadh, ge-tà, tha e riatanach aire a thoirt do chuid de phuingean.
Bu chòir dhut cùisean bunaiteach iomchaidh a chomharrachadh a leigeas leis an ath-chuairt tighinn gu crìch. Mura h-eil iad an làthair, faodaidh an gnìomh leantainn air adhart ga ghairm fhèin gu bràth.
San dàrna h-àite, stèidhichte air an t-suidheachadh a tha ri làimh, faodaidh taghadh an seòrsa ath-chuairteachaidh iomchaidh leantainn gu fuasglaidhean nas èifeachdaiche agus nas eireachdail. Feuch ri faighinn a-mach dè a tha ag obair as fheàrr airson an duilgheadas nad làimh. Nuair a bhios tu ag obair le doimhneachd ath-chuairteachaidh mòr, bi mothachail air cunnartan a dh’ fhaodadh a bhith ann leithid stac thar-shruth.
Leave a Reply