Ma hûn qet di çerxek xuya ya bêdawî de hatine girtin ku pirsgirêkek berbi perçeyên piçûktir ve dibe?
Ger wusa be, dibe ku hûn hatine cîhana balkêş a vegerê. Her çend dibe ku têgihîştina dijwar xuya bike, xem neke! Di vê postê de, em ê biçin rêwîtiyek balkêş da ku li ser celebên vegerê fêr bibin.
Ji ber vê yekê gava ku em gelek nêzîkatiyên paşverû vedikolin, xwe ragirin. Amade bibin ku têkevin qada balkêş a vegerê û li kapasîteya wê ya berbiçav di çareserkirina pirsgirêkên tevlihev de temaşe bikin.
Bi rastî Vegerandin Çi ne?
Bi gotinên bingehîn, vegerandin teknîkek bernamekirinê ya hêzdar e ku fonksiyonek ku di dema darvekirinê de xwe gazî dike vedihewîne. Mîna ku li neynikê binihêre û wêneyek di hundurê wêneyekê de bibîne, di encamê de çerxek xwe-referansê çêdike.
Em dikarin pirsgirêkên mezin bi karanîna vegerê çareser bikin bi dabeşkirina wan li jêrpirsgirêkên piçûktir, birêkûpêktir.
Ew dişibihe berhevkirina jigsaw, ku yek perçeyek bi beşên din ve girêdide da ku wêneyek tevahî çêbike. Vegerandin rê dide me ku em pirsgirêkan bi rengek xweşik û bikêrhatî bi dubarekirina heman rêzika rêwerzan bi têketinên cihêreng çareser bikin.
1-Vegerandina rasterast
Vegerîna rasterast cureya herî bingehîn a vegerê ye, ku tê de fonksiyonek rasterast gazî xwe dike. Ew tê wateya dabeşkirina pirsgirêkek pirsgirêk li jêr-pirsgirêkên piçûktir heya ku dozek bingehîn pêk were, ku dibe sedema bidawîbûnê.
Fonksiyona vegerê xwe bi têketinên cihêreng vedixwîne, ku dihêle ku pêkanîna heman koma rêwerzan were dubare kirin. Her gazîkirin li ser ya pêşîn ava dibe, bi pêşkeftî nêzikî doza bingehîn dibe ku dibe sedema bidawîbûna vegerê.
Ka em vê nimûneyê kontrol bikin.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
Karûabr:
5
4
3
2
1
2-Vegerandina nerasterast
Vegerîna nerasterast tewrek balkêş li riya vegerê zêde dike. Berevajî vegerandina rasterast, ku fonksiyonek ku bi eşkere gazî xwe dike vedihewîne, vegerandina nerasterast zincîrek bangên fonksiyonê vedihewîne.
Yek fonksiyonek din bang dike, ku paşê dikare fonksiyona orîjînal an fonksiyonek din a ku di dawiyê de vedigere ya orîjînal bang bike. Ev tevna hevgirtî ya bangên fonksiyonê dansek balkêş çêdike ku tê de gelek fonksiyon bi hev re dixebitin da ku pirsgirêkek çareser bikin.
Mînak:
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)
Karûabr:
A: 3
B: 2
A: 1
3-Vegerandina rêzî
Heya ku hûn bigihîjin armanca xwe, rêwîtiyek li ser rêyek rast, gav bi gav bifikirin. Ev teknîka rêzdar ji hêla vegerandina xêzikî ve tê veguheztin, ku tê de fonksiyonek di her dubarekirina fonksiyonê de yek bangek vegerî pêk tîne.
Bi her bangek vegerî re, pêvajoya vegerî bi kêmkirina mezinahiya pirsgirêkê nêzîktirê dozek bingehîn dibe. Ew bi rengek zelal û xêzkirî pêşde diçe, pirsgirêkan yeko yeko yeko yeko çareser dike heya ku bigihîje bersiva dawî.
Mînak:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
Karûabr:
120
4-Vegerandina darê
Gava ku fonksiyonek di çend bangên vegerî de şax dibe, em dikevin cîhana vegerandina darê. Fonksiyonek di vegerandina darê de gelek bangên vegerî çêdike, ku her yek ji wan binepirsgirêkek veqetandî çareser dike, mîna şaxên darê.
Vê avahiyek şaxê rê dide lêkolîna hevdemî ya çend rêçan, bi bandor pirsgirêkên tevlihev di nav pêkhateyên piçûktir, bi hev re veqetîne.
Mînak:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
Karûabr:
8
5-Vegerandina Nested
Vegera hêlîn asteke balkêş a tevliheviyê li gerdûna vegerî zêde dike. Di vê forma vegerê de, fonksiyonek bangek vegerî wekî argumanek di nav bangek vegerî ya din de vedihewîne.
Banga vegerî ya hundurîn li ser nirxek ku bi banga vegerê ya derve ve girêdayî ye tevdigere. Tevlihevî bi her gazîkirina hêlînê re mezin dibe, ku bi şêwazek balkêş a bangên vegerî yên hêlîn ve dibe.
Mînak:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
Netîce:
91
6-Devgera dûvikê
Vegerîna dûvikê teknîkek xweşbîniyê ye ji bo algorîtmayên paşverû ku dikare performansa wan baştir bike. Banga vegerî wekî çalakiya dawî ya fonksiyonek bi vegerandina dûvikê, çêkirinê xuya dike.
Ji ber ku li dû banga vegerê operasyonên berbiçav nîn in, berhevkar an wergêr dikare vegerê bi guheztinek hêsan veguhezîne.
Vê nêzîkatiya xweşbîniyê, ku wekî xweşbîniya banga dûvikê tê zanîn, hewcedariya her bangek vegerî kêm dike da ku çarçoveyek stikê bigire, di encamê de leza zêde û karanîna bîranînê kêm dibe.
Mînak:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
Derketin:
120
7-Vegerandina ne dûvik
Berevajî vegerandina dûvikê, vegerandina ne dûvik çalakiyên zêde yên ku piştî banga vegerê di hundurê fonksiyonek de têne kirin vedihewîne. Berî ku kiryarên din bêne kirin, divê her bangek vegerî temam bibe û vegere.
Wekî encamek, heya ku doza bingehîn bigihîje û veger bi dawî bibe, komek operasyonên berbiçav têne domandin. Vegerîna ne-dûvik bi gelemperî bêtir bîranîn bikar tîne û ji vegerandina dûvikê kêmtir bikêr e, lê dîsa jî ew ji bo çareserkirina cûrbecûr pirsgirêkan amûrek alîkar e.
Mînak:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
Karûabr:
15
Hot dog
Vegerandin di bernamekirinê de têgehek balkêş e. Ew dihêle ku em pirsgirêkên tevlihev bi rengek vegerî, xwe-referansê çareser bikin.
Ew rêbazek cûda ya fikirîn û çareserkirina pirsgirêkan pêşkêşî dike, wan di perçeyên piçûktir û rêvebirinê de vediqetîne. Lêbelê, dema ku bi vegerê re dixebitin, girîng e ku meriv bala xwe bide hin xalan.
Pêdivî ye ku hûn dozên bingehîn ên guncan ên ku dihêle ku veger bi dawî bibe nas bikin. Ger ew nebin, dibe ku fonksiyon her û her bidomîne.
Ya duyemîn, li ser bingeha senaryoya li ber dest, bijartina celebek guncan a vegerê dikare bibe sedema çareseriyên bikêrtir û xweştir. Biceribînin ku bibînin ka çi ji bo pirsgirêka di dest de çêtirîn dixebite. Dema ku hûn bi kûrahiyên paşverû yên mezin re dixebitin, hay ji xetereyên potansiyel ên wekî sermaya stackê hebin.
Leave a Reply