Na u kile ua tšoaroa ke potoloho e bonahalang e sa feleng moo bothata bo bolokang makala hore e be likotoana tse nyane?
Haeba ho joalo, e ka ’na eaba u kile ua kopana le lefatše le thabisang la ho iphetetsa. Le hoja ho ka bonahala ho le thata ho utloisisa, u se ke ua tšoenyeha! Ka poso ena, re tla nka leeto le khahlisang la ho ithuta ka mefuta ea li-recursions.
Kahoo ikopanye ha re ntse re hlahloba mekhoa e mengata e iphetang. Itokisetse ho kena sebakeng se khahlang sa ho ipheta hape le ho bona bokhoni ba eona bo makatsang ba ho rarolla mathata a rarahaneng.
Hantle-ntle Recursions ke Eng?
Ka mantsoe a mantlha, recursion ke mokhoa o matla oa ho etsa mananeo o kenyelletsang mosebetsi o ipitsang nakong ea ts'ebetso. Ho tšoana le ho sheba seiponeng ebe u bona setšoantšo se ka har'a setšoantšo, se fellang ka potoloho ea ho itlhahisa.
Re ka sebetsana le litaba tse kholo re sebelisa ho iphetetsa ka ho li arola ka mathata a manyane, a laolehang haholoanyane.
Ho tšoana le ho kopanya jigsaw, moo sekotoana se le seng se hokahanang le likarolo tse ling ho hlahisa setšoantšo se felletseng. Recursion e re lumella ho rarolla mathata ka mokhoa o motle le o sebetsang ka ho pheta-pheta litaelo tse tšoanang ka likenyelletso tse fapaneng.
1-Phetoho e tobileng
Direct recursion ke mofuta oa mantlha oa ho ipheta, moo tšebetso e ipitsa ka kotloloho. E kenyelletsa ho arola bothata bo nang le bothata ka mathata a manyane ho fihlela nyeoe ea motheo e finyelloa, e lebisang ho felisoe.
Recursive function e ipitsa ka li-input tse fapa-fapaneng, e nolofalletsang ho phetoa ha sete e tšoanang ea litaelo. Kopo e 'ngoe le e' ngoe e haha ho ea pele, butle-butle e ntse e atamela nyeoe ea motheo e etsang hore ho khutla ho fele.
A re hlahlobeng mohlala ona.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
Sephetho:
5
4
3
2
1
2-Phetoho e sa tobang
Recursion e sa tobang e eketsa phetoho e khahlang tseleng e khutlang. Ho fapana le ho pheta-pheta ka ho otloloha, ho kenyelletsang ts'ebetso e ipitsa ka mokhoa o hlakileng, phetetso e sa tobang e kenyelletsa letoto la mehala ea ts'ebetso.
Mosebetsi o mong o bitsa o mong, o ka bitsang tšebetso ea pele kapa tšebetso efe kapa efe e qetellang e khutlela ho ea pele. Websaete ena e hokahaneng ea mehala ea tšebetso e hlahisa motjeko o monate oo mesebetsi e mengata e sebelisanang ho lokisa bothata.
mohlala:
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)
Sephetho:
A: 3
B: 2
A: 1
3-Linear Recursion
Nahana ka leeto la ho theosa le tsela e otlolohileng, mohato o le mong ka nako, ho fihlela u fihla moo u batlang. Mokhoa ona oa tatellano o kenyelelitsoe ke linear recursion, moo ts'ebetso e etsang pitso e le 'ngoe e iphetang phetisong e ngoe le e ngoe ea ts'ebetso.
Ka mohala o mong le o mong o iphetang, ts'ebetso ea ho ipheta e atamela haufi le nyeoe ea motheo ka ho theola boholo ba bothata. E tsoela pele ka mokhoa o hlakileng le o hlakileng, e rarolla mathata ka bonngoe ho fihlela karabo ea ho qetela e fihleloa.
mohlala:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
Sephetho:
120
4-Sefate Recursion
Ha ts'ebetso e fetoha mehala e mengata e pheta-phetoang, re kena lefats'eng la recursion ea lifate. Mosebetsi oa ho khutla ha lifate o hlahisa mehala e mengata e iphetang, e 'ngoe le e 'ngoe e rarolla bothata bo fapaneng, joalo ka ha makala a sefate a etsa.
Sebopeho sena sa makala se lumella ho etsa lipatlisiso ka nako e le 'ngoe ea litsela tse' maloa, ka katleho ho senya litaba tse thata ka likaroloana tse nyenyane tse amanang.
mohlala:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
Sephetho:
8
5-Nested Recursion
Nested recursion e eketsa tekanyo e khahlisang ea ho rarahana ho bokahohle bo iphetang. Ka mokhoa ona oa ho pheta-pheta, ts'ebetso e kenyelletsa mohala o iphetang joalo ka khang ka har'a mohala o mong o iphetang.
Mohala o ka hare o iphetang o sebetsa ho boleng bo itshetlehileng hodima mohala o kgutlang o kantle. Ho rarahana hoa hola ka kopo e 'ngoe le e 'ngoe e entsoeng, e fellang ka mokhoa o khahlang oa mehala e iphetang.
mohlala:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
sephetho:
91
6-Mohatla Recursion
Tail recursion ke mokhoa oa ho ntlafatsa bakeng sa li-algorithms tse iphetang tse ka ntlafatsang ts'ebetso ea tsona. Pitso e pheta-phetoang e hlaha e le ketso ea ho qetela ea ts'ebetso e nang le mohatla, ho etsa.
Hobane ha ho na ts'ebetso e hlahelletseng ka mor'a mohala o iphetang, moqapi kapa mofetoleli a ka nolofatsa phetoho ka ho e nkela sebaka ka ho tlola ha bonolo.
Mokhoa ona oa ho ntlafatsa, o tsejoang e le tail optimization ea mohatla, o fokotsa tlhoko ea mohala o mong le o mong o iphetang oa ho boloka foreimi ea stack, e bakang lebelo le matla le ts'ebeliso e tlase ea memori.
mohlala:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
E tsoa:
120
7-Non-Mohatla Recursion
Ho fapana le ho pheta-pheta mohatla, ho pheta-pheta ho se nang mohatla ho kenyelletsa mesebetsi e eketsehileng e etsoang ka mor'a mohala o iphetang ka har'a ts'ebetso. Pele ketso tse ling li ka etsoa, mohala o mong le o mong o iphetang o tlameha ho phethela le ho khutla.
Ka lebaka leo, ho fihlela nyeoe ea motheo e finyelloa 'me ts'ebetso e fela, ho bolokoa letoto la ts'ebetso e tsoetseng pele. Ho pheta-pheta ho se nang mohatla hangata ho sebelisa mohopolo o mongata 'me ha ho sebetse hantle ho feta ho khutlisa mohatla, empa e ntse e le sesebelisoa se thusang ho sebetsana le litaba tse fapaneng.
mohlala:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
Sephetho:
15
Phethela
Recursion ke mohopolo o khahlang ho mananeo. E re lumella ho sebetsana le mathata a rarahaneng ka mokhoa o iphetang, oa ho itlhalosa.
E fana ka mokhoa o ikhethileng oa ho nahana le ho rarolla mathata, ho a arola likotoana tse nyane, tse laolehang haholoanyane. Leha ho le joalo, ha u sebetsa ka ho khutlela morao, ho bohlokoa ho sebelisa ela hloko lintlha tse ling.
U lokela ho khetholla linyeoe tse loketseng tse lumellang hore recursion e fele. Haeba ba le sieo, mosebetsi o ka 'na oa tsoela pele ho ipitsa ka ho sa feleng.
Ea bobeli, ho ipapisitse le boemo bo teng, ho khetha mofuta o nepahetseng oa ho ipheta ho ka lebisa ho litharollo tse sebetsang hantle le tse ntle. Leka ho fumana se sebetsang hantle bakeng sa bothata bo letsohong. Ha u sebetsa ka botebo bo boholo bo khutlang, ela hloko likotsi tse ka bang teng joalo ka ho phalla ha stack.
Leave a Reply