Hefur þú einhvern tíma lent í endalausri hringrás sem virðist endalaus þar sem vandamál halda áfram að greinast í smærri brot?
Ef svo er gætir þú hafa rekist á hrífandi heim endurkomu. Þó að það gæti virst vera erfitt að skilja, ekki hafa áhyggjur! Í þessari færslu förum við í áhugavert ferðalag til að fræðast um tegundir endurtekningar.
Svo spenntu þig þegar við könnum fjölmargar endurkvæmar aðferðir. Búðu þig undir að fara inn á heillandi svið endurkomu og fylgstu með ótrúlegri getu þess til að leysa flókin mál.
Hvað eru endurtekningar nákvæmlega?
Í grunnorðum, endurtekningar er öflug forritunartækni sem felur í sér aðgerð sem kallar sig meðan á framkvæmd stendur. Það er eins og að stara í spegil og sjá mynd inni í mynd, sem leiðir til sjálfsvísunarhringrásar.
Við getum tekist á við stór vandamál með því að nota endurtekningu með því að skipta þeim niður í smærri, viðráðanlegri undirvandamál.
Það er svipað og að setja saman jigsaw, þar sem eitt stykki tengist öðrum hlutum til að framleiða heildarmynd. Recursion gerir okkur kleift að leysa mál á glæsilegan og skilvirkan hátt með því að endurtaka sömu leiðbeiningar með ýmsum inntakum.
1-Bein endurkoma
Bein endurkoma er grunngerð endurkomu, þar sem fall kallar sig beint. Það felur í sér að skipta erfiðu vandamáli í smærri undirvandamál þar til grunntilfelli er náð, sem leiðir til uppsagnar.
Endurkvæma fallið kallar sig með ýmsum inntakum, sem gerir kleift að endurtaka sömu leiðbeiningar. Hver ákall byggir á þeirri fyrri og nálgast smám saman grunntilvikið sem veldur því að endurtekningu lýkur.
Við skulum athuga þetta dæmi.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
Output:
5
4
3
2
1
2-Óbein endurkoma
Óbein endurkoma bætir forvitnilegum snúningi við endurkvæma leiðina. Öfugt við beina endurkomu, sem felur í sér að fall sem kallar sig beinlínis, felur óbein endurhverning í sér keðju af fallköllum.
Eitt fall kallar á aðra, sem getur þá kallað upprunalegu fallið eða hvaða aðra fall sem að lokum fer aftur í upprunalega fallið. Þessi samtengdi vefur aðgerðarkalla framkallar hrífandi dans þar sem nokkrar aðgerðir vinna saman til að laga vandamál.
Dæmi:
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)
Output:
A: 3
B: 2
A: 1
3-línuleg endurkoma
Íhugaðu ferð niður beina leið, eitt skref í einu, þar til þú kemur að markmiði þínu. Þessi raðbundna tækni er útfærð af línulegri endurkomu, þar sem fall framkvæmir eitt endurkvæmt símtal í hverri fallendurtekningu.
Með hverju endurkvæmu símtali færist endurkvæma ferlið nær grunntilviki með því að lækka útgáfustærðina. Það heldur áfram á skýran og línulegan hátt og leysir undirvandamál eitt í einu þar til endanlegt svar er náð.
Dæmi:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
Output:
120
4-tré endurkoma
Þegar fall greinist í nokkur endurhverf köll komum við inn í heim tréendurkvæmni. Fall í tré endurkvæmni myndar mörg endurkvæm köll sem hvert um sig leysir sérstakt undirvandamál, alveg eins og greinar trés gera.
Þessi greiningarbygging gerir kleift að rannsaka nokkrar leiðir samtímis, sem í raun skiptir flóknum málum niður í smærri, innbyrðis tengda hluti.
Dæmi:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
Output:
8
5-varpað endurkomu
Hreiður endurkoma bætir spennandi flækjustig við endurkvæma alheiminn. Í þessu formi endurkomu fellur fall endurkvæmt símtal inn sem rök í öðru endurkvæmu símtali.
Innra endurkvæma kallið virkar á gildi sem er háð ytra endurkvæma kallinu. Flækjustigið eykst með hverri hreiðri ákalli, sem nær hámarki í forvitnilegu mynstri hreiðra endurkvæmra kalla.
Dæmi:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
Niðurstaða:
91
6-hala endurkoma
Tail recursion er hagræðingartækni fyrir endurkvæma reiknirit sem geta bætt árangur þeirra. Endurkvæma símtalið birtist sem lokaaðgerð falls með afturvirkni, sem gerir.
Vegna þess að það eru engar útistandandi aðgerðir í kjölfar endurkvæma símtalsins, getur þýðandinn eða túlkurinn einfaldað endurkomuna með því að skipta henni út fyrir einfalt stökk.
Þessi fínstillingarnálgun, þekkt sem hagræðing á halakalli, dregur úr kröfunni fyrir hvert endurkvæmt símtal til að halda staflaramma, sem leiðir til aukins hraða og minni notkunar á minni.
Dæmi:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
Úti:
120
7-Non-Tail Recursion
Öfugt við afturvirkni í hala felur ekki í sér endurkomu sem ekki er hala í sér aukaaðgerðir sem framkvæmdar eru eftir endurkvæma símtalið innan falls. Áður en hægt er að framkvæma fleiri aðgerðir verður hvert endurkvæmt símtal að ljúka og skila.
Þar af leiðandi, þar til grunntilfelli er náð og endurkomunni lýkur, er bunka af útistandandi aðgerðum viðhaldið. Endurkoma án hala notar oft meira minni og er óhagkvæmari en afturvirkni, en það er samt gagnlegt tæki til að takast á við margvísleg vandamál.
Dæmi:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
Output:
15
vefja upp
Endurkoma er forvitnilegt hugtak í forritun. Það gerir okkur kleift að takast á við flókin vandamál á endurkvæman, sjálfsvísandi hátt.
Það býður upp á sérstaka aðferð til að hugsa um og leysa vandamál, brjóta þau niður í smærri, viðráðanlegri bita. Þegar unnið er með endurtekningu er hins vegar mikilvægt að nota gaum að sumum atriðum.
Þú ættir að bera kennsl á viðeigandi grunntilvik sem leyfa endurtekningu að ljúka. Ef þeir eru ekki til staðar gæti aðgerðin haldið áfram að kalla sig að eilífu.
Í öðru lagi, byggt á atburðarásinni, getur val á viðeigandi tegund endurtekningar leitt til skilvirkari og glæsilegri lausna. Reyndu að finna hvað virkar best fyrir vandamálið í hendinni. Þegar unnið er með mikla endurkomudýpi, vertu meðvitaður um hugsanlegar hættur eins og flæði stafla.
Skildu eftir skilaboð