Na i ai se taimi na maua ai oe i se taamilosaga e foliga mai e le uma lea o loʻo faʻaauau pea ona faʻalauteleina se faʻafitauli i ni vaega laiti?
Afai o lea, atonu ua e sau i le lalolagi mataʻina o le toe faʻafoʻisia. E ui e foliga mai e faigata ona malamalama, aua le popole! I lenei pou, o le a tatou alu i se malaga manaia e aʻoaʻo ai e uiga i ituaiga o toe faʻafoʻi.
O lea ia fusifusia aʻo tatou suʻesuʻeina le tele o auala faʻasolosolo. Sauni e ulufale atu i le malo matagofie o le toe faʻaleleia ma mataʻituina lona tomai ofoofogia i le foia o mataupu faigata.
O le a tonu le Recursions?
I upu masani, o le recursion o se faiga faʻapolokalame malosi e aofia ai se galuega e valaʻau ia lava i le taimi o le faʻatinoga. E pei o le tilotilo atu i se faʻata ma vaʻai i se ata i totonu o se ata, e iʻu ai i se taamilosaga faʻapitoa.
E mafai ona tatou fo'ia fa'afitauli tetele i le fa'aaogaina o le toe fa'afo'i e ala i le vaevaeina i lalo i ni fa'afitauli laiti, sili atu ona fa'afoeina.
E tutusa ma le tu'u fa'atasi o se jigsaw, lea e so'o ai le tasi fasi vaega i isi vaega e maua ai se ata atoa. Recursion e mafai ai ona tatou foia mataupu i se auala matagofie ma lelei e ala i le toe faia o le seti tutusa o faatonuga ma mea eseese.
1-Tu'u Sa'o
Recursion tuusa'o o le ituaiga sili ona faavae o le toe fa'afo'i, lea e ta'u sa'o ai e se galuega. E a'afia ai le vaevaeina o se fa'afitauli fa'afitauli i ni fa'afitauli laiti se'ia maua se mataupu faavae, lea e o'o atu ai i le fa'amuta.
O le galuega toe fa'afo'i e fa'aigoaina o ia lava i mea fa'aoga eseese, e mafai ai ona toe faia le fa'atinoga o le seti tutusa o fa'atonuga. O fa'atonuga ta'itasi e fa'avae i luga o le mea muamua, fa'asolosolo latalata i le mata'upu fa'avae e fa'agata ai le toe fa'afo'i.
Sei o tatou siaki lenei faataitaiga.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
Galuega Faʻatino:
5
4
3
2
1
2-Fa'asa'o Fa'afouga
O le toe fa'afo'i fa'alaua'itonu e fa'aopoopoina ai se mimilo mata'ina i le ala toe fa'afo'i. E ese mai i le tuusa'o o le toe fa'afo'i, lea e aofia ai se galuega e ta'u manino mai ia te ia lava, o le toe tu'usa'o e aofia ai se filifili o valaau galuega.
O le tasi galuega e vala'au i le isi, ona mafai lea ona vala'au i le ulua'i galuega po'o so'o se isi lava galuega e toe fo'i i le ulua'i galuega. O lenei upega feso'ota'i feso'ota'iga o telefoni e maua ai se siva fa'afiafia lea e galulue fa'atasi ai le tele o galuega e fo'ia ai se fa'afitauli.
faataitaiga:
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)
Galuega Faʻatino:
A: 3
B: 2
A: 1
3-Linear Recursion
Mafaufau i se malaga i lalo i se ala saʻo, tasi le laasaga i le taimi, seia e taunuu i lou sini. O lenei fa'asologa fa'asologa o lo'o fa'atusalia i le fa'asologa fa'asolosolo, lea e fa'atino ai e se galuega se vala'au fa'asolosolo se tasi i fa'asologa o galuega ta'itasi.
Faatasi ai ma valaau recursive taitasi, o le faagasologa recursive agai latalata atu i se mataupu faavae e ala i le faaitiitia o le tele o le mataupu. E fa'agasolo i se auala manino ma laina, fo'ia fa'afitauli ta'itasi i le taimi se'ia o'o i le tali mulimuli.
faataitaiga:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
Galuega Faʻatino:
120
4-Toe La'au
Pe a lala se galuega i le tele o valaau recursive, tatou ulufale atu i le lalolagi o laau recursion. O se galuega i le toe fa'aleleia o la'au e fa'atupuina ai le tele o vala'au toe fa'afo'i, o ia mea ta'itasi e fo'ia ai se isi fa'afitauli, e pei lava ona faia e lala o se la'au.
O lenei fausaga lala e mafai ai mo le suʻesuʻega faʻatasi o le tele o auala, faʻamaeʻaina le talepeina o mataupu lavelave i ni vaega laiti, fesoʻotaʻi.
faataitaiga:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
Galuega Faʻatino:
8
5-Nested Recursion
Nested recursion e fa'aopoopoina ai se tulaga fa'afiafiaina o le lavelave i le atulaulau toe fa'afo'i. I lenei faiga o le toe fa'afo'i, o se galuega e fa'apipi'i ai se vala'au toe fa'afo'i e fai ma finauga i totonu o se isi vala'au toe fa'afo'i.
O le valaau recursive i totonu e galue i luga o se tau e faalagolago i le valaau recursive i fafo. E fa'atupula'ia le lavelave i fa'atalosaga ta'itasi ta'itasi, fa'ai'u i se fa'ata'ita'iga fa'amanino o vala'au toe fa'amoega.
faataitaiga:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
Taunuʻuga:
91
6-Tail Recursion
O le toe faʻaleleia o siʻusiʻu o se metotia faʻapitoa mo algorithms toe faʻaleleia e mafai ona faʻaleleia a latou faʻatinoga. O le valaau recursive e foliga mai o le gaioiga mulimuli o se galuega ma le siʻusiʻu recursion, faia.
Talu ai e leai ni fa'agaioiga mata'ina pe a mae'a le vala'au recursive, e mafai e le tu'ufa'atasi po'o le fa'aliliu upu ona fa'afaigofie le toe fa'afoliga e ala i le suiina i se oso faigofie.
O lenei faiga fa'apitoa, ua ta'ua o le tail call optimization, e fa'aitiitia ai le mana'oga mo valaau ta'itasi ta'itasi e fa'atumauina ai se fa'aputugā fa'avaa, e fa'atupu ai le fa'avavevave ma fa'aitiitia le fa'aogaina o mafaufauga.
faataitaiga:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
fafo:
120
7-E le-Tail Recursion
I le faʻatusatusaina o le toe faʻaleleia o le siʻusiʻu, o le toe faʻaleleia o le siʻusiʻu e aofia ai gaioiga faʻaopoopo e faia pe a maeʻa le valaau faʻasolosolo i totonu o se galuega. A'o le'i faia nisi gaioiga, e tatau ona fa'amae'a ma toe fo'i mai vala'au ta'itasi.
O le i'uga, se'ia o'o i le mataupu faavae ma fa'ai'u le toe fa'afoliga, e fa'atumauina pea le fa'aputuga o galuega fa'atino. Ole toe fa'asolo ole si'usi'u e masani ona fa'aogaina ai le tele o manatua ma e itiiti le lelei nai lo le toe fa'afo'i si'usi'u, ae ose meafaigaluega fesoasoani mo le fo'ia o fa'afitauli eseese.
faataitaiga:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
Galuega Faʻatino:
15
Faamae'a mai
Recursion o se manatu manaia i polokalame. E fa'atagaina ai i tatou e fo'ia fa'afitauli lavelave i se faiga toe fa'afo'i, fa'asino e le tagata lava ia.
O lo'o ofoina mai ai se auala ma'oti e mafaufau ai ma fo'ia fa'afitauli, malepe i ni pusi laiti, sili atu ona fa'afoeina. Pe a galue faʻatasi, peitaʻi, e taua tele le faʻaogaina o le faʻalogo i nisi o itu.
E tatau ona e fa'ailoa tulaga fa'avae talafeagai e fa'agata ai le toe fa'afo'i. Afai latou te le o iai, o le galuega e mafai ona faʻaauau pea ona taʻua o ia lava e faʻavavau.
Lona lua, faʻavae i luga o le faʻataʻitaʻiga o loʻo i ai, o le filifilia o le ituaiga talafeagai o le toe faʻaleleia e mafai ona oʻo atu ai i ni fofo sili atu ona lelei ma matagofie. Taumafai e su'e le mea e sili ona lelei mo le fa'afitauli i le lima. Pe a galue i le loloto o le toe fa'afo'i, ia nofouta i mea e ono tutupu mai ai e pei o le fa'aputu i luga.
Tuua se tali