Shin an taɓa kama ku a cikin yanayin da ba a ƙarewa ba inda matsala ke ci gaba da reshe zuwa ƙananan guntu?
Idan haka ne, mai yiwuwa ka zo kan duniyar maimaituwa mai ban sha'awa. Duk da yake yana iya zama kamar yana da wuyar fahimta, kada ku damu! A cikin wannan sakon, za mu yi tafiya mai ban sha'awa don koyo game da nau'ikan maimaitawa.
Don haka ci gaba yayin da muke bincika hanyoyi masu maimaitawa. Shirya don shiga cikin yanayi mai ban sha'awa na maimaitawa da lura da iyawar sa na warware matsaloli masu rikitarwa.
Menene Ainihi Maimaituwa?
A cikin kalmomi na asali, maimaitawa fasaha ce mai ƙarfi mai ƙarfi wanda ya haɗa da aikin da ke kiran kansa yayin aiwatarwa. Yana kama da kallon madubi da ganin hoto a cikin hoto, yana haifar da zagayowar kai.
Za mu iya magance manyan al'amurra ta amfani da maimaitawa ta hanyar rarraba su zuwa ƙananan ƙananan matsalolin da za a iya sarrafawa.
Yana kama da haɗa jigsaw, inda yanki ɗaya ya haɗa zuwa wasu sassa don samar da cikakken hoto. Maimaitawa yana ba mu damar magance batutuwa cikin ƙayatacciyar hanya da inganci ta hanyar maimaita saitin umarni iri ɗaya tare da bayanai daban-daban.
1-Maiwaitawa Kai tsaye
Maimaituwa kai tsaye shine mafi asali nau'in maimaitawa, wanda aikin ke kiran kansa kai tsaye. Yana haɗa da rarraba matsala zuwa ƙananan ƙananan matsaloli har sai an sami tushe mai tushe, wanda zai haifar da ƙarewa.
Ayyukan maimaitawa yana kiran kansa tare da bayanai daban-daban, yana ba da damar aiwatar da saitin umarni iri ɗaya don maimaitawa. Kowane kira yana ginawa a kan wanda ya gabata, a hankali yana kusantar tushen shari'ar da ke haifar da maimaitawa.
Bari mu duba wannan misalin.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
fitarwa:
5
4
3
2
1
2-Maiwaitawa Kai tsaye
Maimaituwa kaikaice yana ƙara karkatarwa mai ban sha'awa ga hanyar maimaitawa. Ya bambanta da maimaitawa kai tsaye, wanda ya ƙunshi aiki a fili yana kiran kansa, maimaitawa kai tsaye ya haɗa da jerin kira na ayyuka.
Wani aikin yana kiran wani, wanda zai iya kiran ainihin aikin ko duk wani aiki wanda a ƙarshe ya koma asalinsa. Wannan haɗin haɗin yanar gizo na kiran ayyuka yana samar da raye-raye mai ban sha'awa wanda ayyuka da yawa ke haɗin gwiwa don gyara matsala.
Example:
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)
fitarwa:
A: 3
B: 2
A: 1
3-Madogaran Layi
Yi la'akari da tafiya ta hanya madaidaiciya, mataki ɗaya a lokaci guda, har sai kun isa ga manufarku. Wannan dabarar dabarar tana kunshe ne ta hanyar komawar layin layi, wanda a cikinsa aiki ke yin kira guda ɗaya mai maimaitawa a cikin kowane juzu'in aiki.
Tare da kowane kira mai maimaitawa, tsarin maimaitawa yana matsawa kusa da shari'ar tushe ta rage girman batun. Yana ci gaba a bayyane kuma madaidaiciya, yana magance matsalolin da ke faruwa ɗaya bayan ɗaya har sai an kai ga ƙarshe.
Example:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
fitarwa:
120
4-Mamayar Itace
Lokacin da aikin ya bazu cikin kira mai maimaitawa da yawa, zamu shiga duniyar maimaita bishiyar. Wani aiki a cikin maimaita bishiyar yana haifar da kira mai maimaitawa da yawa, kowannensu yana warware matsala ta daban, kamar yadda rassan bishiyar ke yi.
Wannan tsarin reshe yana ba da damar yin bincike lokaci guda na hanyoyi da yawa, yadda ya kamata ya wargaza al'amura masu rikitarwa zuwa ƙananan sassa masu alaƙa.
Example:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
fitarwa:
8
5- Maimaitawa
Maimaitawa na gida yana ƙara ƙwaƙƙwal mai ban sha'awa na rikiɗa zuwa sararin samaniya mai maimaitawa. A cikin wannan nau'i na maimaitawa, aiki yana haɗa kira mai maimaitawa azaman hujja a cikin wani kira mai maimaitawa.
Kiran maimaitawa na ciki yana aiki akan ƙimar da ta dogara da kiran mai maimaitawa na waje. Rukunin yana girma tare da kowane kira na gida, yana ƙarewa a cikin tsari mai ban sha'awa na kira mai maimaitawa.
Example:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
Sakamako:
91
6-Talaluwar wutsiya
Maimaita wutsiya dabara ce ta ingantawa don maimaita algorithms waɗanda zasu iya haɓaka aikinsu. Kira mai maimaitawa yana bayyana azaman aikin ƙarshe na aiki tare da maimaita wutsiya, yin.
Saboda babu wani fitattun ayyuka da ke biyo bayan kiran maimaitawa, mai tarawa ko mai fassara zai iya sauƙaƙa maimaitawa ta hanyar maye gurbinsa da tsalle mai sauƙi.
Wannan tsarin ingantawa, wanda aka sani da haɓaka kiran wutsiya, yana rage buƙatu don kowane kira mai maimaitawa don riƙe tari, yana haifar da ingantaccen saurin gudu da ƙarancin amfani da ƙwaƙwalwar ajiya.
Example:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
Fitowa:
120
7-Rashin Wutsiya Maimaitawa
Ya bambanta da komawar wutsiya, koma bayan wutsiya ya ƙunshi ƙarin ayyukan da aka yi bayan maimaita kiran a cikin wani aiki. Kafin a sake yin wasu ayyuka, kowane kira mai maimaitawa dole ya cika kuma ya dawo.
Sakamakon haka, har sai an kai ga ƙarar tushe kuma sake dawowar ta ƙare, ana kiyaye tarin fitattun ayyuka. Maimaitawa mara wutsiya akai-akai yana amfani da ƙarin ƙwaƙwalwar ajiya kuma ba shi da inganci fiye da koma bayan wutsiya, amma har yanzu kayan aiki ne mai taimako don magance batutuwa iri-iri.
Example:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
fitarwa:
15
Kunsa shi
Recursion ra'ayi ne mai ban sha'awa a cikin shirye-shirye. Yana ba mu damar magance matsaloli masu rikitarwa a cikin maimaitawa, hanyar nuna kai.
Yana ba da wata hanya ta musamman ta tunani da warware matsaloli, ta wargaje su cikin ƙanƙanta, mafi iya sarrafa su. Lokacin aiki tare da maimaitawa, duk da haka, yana da mahimmanci don amfani da hankali ga wasu maki.
Ya kamata ku gano lokuta masu dacewa da suka dace waɗanda ke ba da damar sake dawowa ya ƙare. Idan ba su nan, aikin na iya ci gaba da kiran kansa har abada.
Na biyu, dangane da yanayin da ke hannun, zabar nau'in maimaitawa da ya dace zai iya haifar da ingantacciyar mafita da kyawu. Yi ƙoƙarin nemo abin da ya fi dacewa don matsalar a hannu. Lokacin aiki tare da zurfin koma baya, lura da haɗarin haɗari kamar tari mai ambaliya.
Leave a Reply