Njẹ o ti mu ọ ni ayika ti o dabi ẹnipe ti ko ni opin nibiti iṣoro kan ti n tẹsiwaju si awọn ajẹkù kekere bi?
Bó bá rí bẹ́ẹ̀, ó ṣeé ṣe kó o ti dé bá ayé tó ń fani lọ́kàn mọ́ra. Lakoko ti o le dabi pe o nira lati ni oye, maṣe yọ ara rẹ lẹnu! Ninu ifiweranṣẹ yii, a yoo lọ si irin-ajo ti o nifẹ lati kọ ẹkọ nipa awọn iru awọn atunwi.
Nitorinaa murasilẹ bi a ṣe n ṣawari ọpọlọpọ awọn isunmọ isọdọtun. Mura lati tẹ agbegbe iyalẹnu ti iṣipopada ki o ṣe akiyesi agbara iyalẹnu rẹ ni yiyanju awọn ọran idiju.
Kini Gangan Awọn Ipadabọ?
Ni awọn ọrọ ipilẹ, iṣipopada jẹ ilana siseto ti o lagbara ti o pẹlu iṣẹ kan ti n pe ararẹ lakoko ipaniyan. O dabi wíwo inu digi kan ati wiwo aworan kan ninu aworan kan, ti o yọrisi iyipo ti ara ẹni.
A le koju awọn ọran nla nipa lilo ipadasẹhin nipa pipin wọn si isalẹ si awọn iṣoro kekere ti o le ṣakoso diẹ sii.
O jẹ iru si fifi papo kan jigsaw, nibiti nkan kan sopọ si awọn ẹya miiran lati ṣe agbejade aworan ni kikun. Recursion gba wa laaye lati yanju awọn ọran ni ọna didara ati lilo daradara nipa atunwi ilana ilana kanna pẹlu ọpọlọpọ awọn igbewọle.
1-Direct Recursion
Ipadabọ taara jẹ oriṣi ipilẹ julọ ti iṣipopada, ninu eyiti iṣẹ kan pe ararẹ taara. O kan pinpin iṣoro iṣoro sinu awọn iṣoro kekere titi ti ọran ipilẹ yoo ti waye, eyiti o yori si ifopinsi.
Iṣẹ isọdọtun n pe ararẹ pẹlu ọpọlọpọ awọn igbewọle, ti o mu ki ipaniyan eto ilana kanna le tun ṣe. Epe kọọkan n gbele lori iṣaaju, ni ilọsiwaju ti o sunmọ ọran ipilẹ ti o fa iṣipopada lati pari.
Jẹ ki a ṣayẹwo apẹẹrẹ yii.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
o wu:
5
4
3
2
1
2-aiṣe-taara Recursion
Ipadabọ aiṣe-taara ṣe afikun lilọ iyanilẹnu si ọna atunṣe. Ni idakeji si iṣipopada taara, eyiti o kan iṣẹ kan ni gbangba ti n pe ararẹ, iṣipopada aiṣe-taara pẹlu pq awọn ipe iṣẹ.
Iṣẹ kan n pe omiran, eyiti o le pe iṣẹ atilẹba tabi iṣẹ miiran ti o pada sẹhin si atilẹba. Wẹẹbu ti o ni asopọ ti awọn ipe iṣẹ ṣe agbejade ijó ti o wuyi ninu eyiti ọpọlọpọ awọn iṣẹ n ṣe ifowosowopo lati ṣatunṣe iṣoro kan.
apere:
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)
o wu:
A: 3
B: 2
A: 1
3-Linear Recursion
Gbero irin-ajo lọ si ọna titọ, igbesẹ kan ni akoko kan, titi iwọ o fi de ibi-afẹde rẹ. Ilana ilana-tẹle yii jẹ iṣe nipasẹ isọdọtun laini, ninu eyiti iṣẹ kan n ṣe ipe atunwi kan ni aṣetunṣe iṣẹ kọọkan.
Pẹlu ipe loorekoore kọọkan, ilana isọdọtun n lọ si isunmọ si ọran ipilẹ nipa sisọ iwọn oro silẹ. O tẹsiwaju ni ọna ti o han gedegbe ati laini, ipinnu awọn iṣoro-ipin ọkan ni akoko kan titi ti idahun ti o ga julọ yoo fi de.
apere:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
o wu:
120
4-Igi Recursion
Nigba ti a iṣẹ ẹka sinu orisirisi recursive awọn ipe, a tẹ awọn aye ti igi recursion. Išẹ kan ninu iṣipopada igi n ṣe ọpọlọpọ awọn ipe atunṣe, ọkọọkan eyiti o yanju iṣoro ti o yatọ, gẹgẹ bi awọn ẹka igi ṣe.
Ẹya ẹka yii ngbanilaaye fun iwadii igbakanna ti awọn ipa-ọna pupọ, ni imunadoko ni fifọ awọn ọran idiju sinu awọn paati ti o kere, ti o ni ibatan.
apere:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
o wu:
8
5-Tiwon Recursion
Ilọlẹ recursion ṣe afikun ohun moriwu ìyí ti complexity si awọn recursive Agbaye. Ni irisi atunwi yii, iṣẹ kan ṣafikun ipe loorekoore bi ariyanjiyan laarin ipe isọdọtun miiran.
Ipe recursive ti inu n ṣiṣẹ lori iye ti o dale lori ipe atunkọ lode. Idiju naa dagba pẹlu ẹbẹ oni iteeye kọọkan, ti o pari ni ilana iyanilenu ti awọn ipe isọdọtun oni iteeye.
apere:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
esi:
91
6-Iru Recursion
Ipadabọ iru jẹ ilana iṣapeye fun awọn algoridimu atunṣe ti o le mu iṣẹ wọn dara si. Ipe atunṣe yoo han bi iṣẹ ikẹhin ti iṣẹ kan pẹlu atunṣe iru, ṣiṣe.
Nitoripe ko si awọn iṣẹ ṣiṣe to dayato ti o tẹle ipe loorekoore, olupilẹṣẹ tabi onitumọ le jẹ ki iṣipopada di irọrun nipa rirọpo pẹlu fo ti o rọrun.
Ọna iṣapeye yii, ti a mọ si iṣapeye ipe iru, dinku ibeere fun ipe loorekoore kọọkan lati ṣe idaduro fireemu akopọ kan, ti o mu ki iyara ti mu dara si ati lilo iranti kekere.
apere:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
Jade:
120
7-Non-Tail Recursion
Ni idakeji si isọdọtun iru, isọdọtun ti kii ṣe iru jẹ pẹlu awọn iṣẹ afikun ti a ṣe lẹhin ipe atunwi laarin iṣẹ kan. Ṣaaju ki o to ṣee ṣe eyikeyi awọn iṣe diẹ sii, ipe atunwi kọọkan gbọdọ pari ati pada.
Bi abajade, titi ti ọran ipilẹ yoo ti de ati pe ipadasẹhin yoo pari, akopọ ti awọn iṣẹ ṣiṣe to dayato ti wa ni itọju. Ipadabọ ti kii ṣe iru nigbagbogbo nlo iranti diẹ sii ati pe ko ṣiṣẹ daradara ju isọdọtun iru, ṣugbọn o tun jẹ ohun elo iranlọwọ fun koju ọpọlọpọ awọn ọran.
apere:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
o wu:
15
Pale mo
Recursion jẹ imọran iyalẹnu ninu siseto. O gba wa laaye lati koju awọn iṣoro idiju ni loorekoore, ọna itọkasi ti ara ẹni.
O funni ni ọna ti o yatọ ti ironu nipa ati yanju awọn iṣoro, fifọ wọn si isalẹ si awọn chunks ti o kere ju, iṣakoso diẹ sii. Nigbati o ba n ṣiṣẹ pẹlu isọdọtun, sibẹsibẹ, o ṣe pataki lati lo akiyesi si awọn aaye kan.
O yẹ ki o ṣe idanimọ awọn ọran ipilẹ ti o yẹ ti o jẹ ki isọdọtun lati pari. Ti wọn ko ba wa, iṣẹ naa le tẹsiwaju lati pe ararẹ lailai.
Keji, da lori awọn ohn ni ọwọ, yiyan awọn yẹ irú ti recursion le ja si daradara siwaju sii ati ki o yangan solusan. Gbiyanju lati wa ohun ti o ṣiṣẹ julọ fun iṣoro ni ọwọ. Nigbati o ba n ṣiṣẹ pẹlu awọn ijinle isọdọtun nla, ṣe akiyesi awọn ewu ti o pọju gẹgẹbi akopọ aponsedanu.
Fi a Reply