ایا تاسو کله هم په داسې نه ختمیدونکي دوره کې نیول شوي یاست چیرې چې ستونزه په کوچنیو ټوټو کې څانګې ساتي؟
که داسې وي، تاسو ممکن د تکرار په زړه پورې نړۍ کې راغلي یاست. پداسې حال کې چې دا د پوهیدو لپاره ننګونې ښکاري، اندیښنه مه کوئ! پدې پوسټ کې ، موږ به د تکرار ډولونو په اړه زده کولو لپاره په زړه پورې سفر ته لاړ شو.
نو لکه څنګه چې موږ ډیری تکراري تګلارې وپلټئ. د تکرار په زړه پورې ساحې ته د ننوتلو لپاره چمتو اوسئ او د پیچلو مسلو حل کولو کې د پام وړ وړتیا وګورئ.
په حقیقت کې تکرار څه دي؟
په بنسټیزو کلمو کې، تکرار یو پیاوړی پروګرامینګ تخنیک دی چې په هغه کې یو فنکشن شامل دی چې ځان د اجرا کولو پرمهال غږوي. دا د عکس په دننه کې د عکس لیدلو په څیر دی، چې په پایله کې د ځان د راجع کولو دوره وي.
موږ کولی شو لوی مسلې د تکرار په کارولو سره حل کړو چې دوی په کوچنیو، ډیر مدیریت وړ فرعي ستونزو ویشلو.
دا د جیګس سره یوځای کولو ته ورته دی ، چیرې چې یوه ټوټه د بشپړ عکس رامینځته کولو لپاره نورو برخو سره اړیکه لري. تکرار موږ ته اجازه راکوي چې مسلې په ښکلي او مؤثره توګه حل کړو د ورته لارښوونو سیټ د بیالبیلو معلوماتو سره تکرارولو سره.
1-مستقيم تکرار
مستقیم تکرار د تکرار ترټولو بنسټیز ډول دی، په کوم کې چې یو فنکشن خپل ځان مستقیم بولي. دا د یوې ستونزمنې ستونزې په کوچنیو فرعي ستونزو ویشلو پورې اړه لري تر هغه چې د اساس قضیه ترلاسه شي، کوم چې د پای ته رسولو المل کیږي.
تکراري فنکشن ځان د مختلف آخذونو سره غږوي، د ورته لارښوونو اجرا کولو توان ورکوي چې تکرار شي. هره غوښتنه په مخکیني ډول رامینځته کیږي ، په تدریجي ډول د بیس قضیې ته نږدې کیږي چې د تکرار پای ته رسیدو لامل کیږي.
راځئ چې دا مثال وګورو.
def countdown(n):
if n <= 0:
return
print(n)
countdown(n - 1)
countdown(5)
محصول:
5
4
3
2
1
۲-غیر مستقیم تکرار
غیر مستقیم تکرار تکراري لار ته یو زړه راښکونکی موج اضافه کوي. د مستقیم تکرار په مقابل کې، کوم چې یو فنکشن په ښکاره ډول ځان ته زنګ وهي، غیر مستقیم تکرار د فنکشن کالونو سلسله شامله ده.
یو فنکشن بل ته زنګ وهي، کوم چې بیا اصلي فنکشن یا کوم بل فنکشن ته بللی شي چې په پای کې اصلي ته ځي. د فنکشن کالونو دا یو له بل سره وصل شوی ویب یو زړه راښکونکی نڅا رامینځته کوي په کوم کې چې ډیری دندې د ستونزې حل کولو لپاره همکاري کوي.
مثال:
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)
محصول:
A: 3
B: 2
A: 1
۳- خطي تکرار
په مستقیمه لاره یو سفر په پام کې ونیسئ، په یو وخت کې یو ګام، تر هغه چې تاسو خپل هدف ته ورسیږئ. دا ترتیبي تخنیک د خطي تکرار لخوا رامینځته شوی ، په کوم کې چې یو فنکشن په هر فعالیت تکرار کې یو واحد تکراري کال ترسره کوي.
د هر تکراري زنګ سره، تکراري پروسه د مسلې اندازې کمولو سره د بیس قضیې ته نږدې کیږي. دا په روښانه او خطي ډول پرمخ ځي، فرعي ستونزې په یو وخت کې حل کوي تر هغه چې حتمي ځواب ته ورسیږي.
مثال:
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
result = factorial(5)
print(result)
محصول:
120
۴-د ونې تکرار
کله چې یو فنکشن په څو تکراري تلیفونونو کې څانګې لري، موږ د ونې تکرار نړۍ ته ننوځو. د ونې په تکرار کې فنکشن ډیری تکراري زنګونه رامینځته کوي ، چې هر یو یې جلا فرعي ستونزه حل کوي ، لکه څنګه چې د ونې څانګې کوي.
دا د څانګو جوړښت د څو لارو په یو وخت تحقیق کولو ته اجازه ورکوي، په اغیزمنه توګه پیچلې مسلې په کوچنیو، یو بل سره تړلې اجزاو ته ماتوي.
مثال:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
result = fibonacci(6)
print(result)
محصول:
8
5-نست شوی تکرار
Nested recursion په تکراري کائناتو کې د پیچلتیا یوه په زړه پورې درجې اضافه کوي. د تکرار په دې بڼه کې، یو فنکشن په بل تکراري کال کې د دلیل په توګه تکراري کال شاملوي.
داخلي تکراري زنګ په هغه ارزښت عمل کوي چې په بهرني تکراري کال پورې اړه لري. پیچلتیا د هر ځړول شوي غوښتنې سره وده کوي، د نیسټ شوي تکراري تلیفونونو په زړه پورې نمونه پای ته رسیږي.
مثال:
def nested_recursion(n):
if n > 100:
return n - 10
return nested_recursion(nested_recursion(n + 11))
result = nested_recursion(95)
print(result)
پایلې:
91
6-دمخ تکرار
د ټیل تکرار د تکراري الګوریتمونو لپاره د اصلاح کولو تخنیک دی چې کولی شي د دوی فعالیت ښه کړي. تکراري زنګ د فنکشن د وروستي عمل په توګه د tail recursion سره ښکاري.
ځکه چې د تکراري زنګ څخه وروسته هیڅ کوم غوره عملیات شتون نلري، تالیف کونکی یا ژباړونکی کولی شي د ساده کود سره په ځای کولو سره تکرار ساده کړي.
د اصلاح کولو دا طریقه، چې د ټیل کال اصلاح په نوم پیژندل کیږي، د سټیک فریم ساتلو لپاره د هر تکراري کال اړتیا کموي، په پایله کې د لوړ سرعت او د حافظې کم کارول.
مثال:
def tail_factorial(n, result=1):
if n == 0:
return result
return tail_factorial(n - 1, result * n)
result = tail_factorial(5)
print(result)
بهر:
120
7-بې دم تکرار
د tail recursion په مقابل کې، non-tail recursion د فنکشن دننه د تکراري کال وروسته ترسره شوي اضافي فعالیتونه شامل دي. مخکې لدې چې نور عملونه ترسره شي ، هر تکراري تلیفون باید بشپړ شي او بیرته راستانه شي.
د پایلې په توګه، تر هغه چې د بیس قضیه پای ته ورسیږي او بیا تکرار پای ته ورسیږي، د بقایا عملیاتونو ذخیره ساتل کیږي. غیر دم تکرار په مکرر ډول ډیر حافظه کاروي او د tail recursion په پرتله لږ موثر دی ، مګر دا لاهم د مختلف مسلو سره د مبارزې لپاره ګټور وسیله ده.
مثال:
def non_tail_sum(n):
if n == 0:
return 0
return n + non_tail_sum(n - 1)
result = non_tail_sum(5)
print(result)
محصول:
15
و نغاړئ
تکرار په برنامه کې یو زړه راښکونکی مفهوم دی. دا موږ ته اجازه راکوي چې پیچلې ستونزې په تکراري ، ځان راجع کولو سره حل کړو.
دا د ستونزو په اړه د فکر کولو او حل کولو لپاره یو ځانګړی میتود وړاندې کوي، دوی په کوچنیو، ډیر مدیریت وړ برخو کې ماتوي. کله چې د تکرار سره کار کوئ، په هرصورت، دا اړینه ده چې ځینې ټکي ته پام وکړئ.
تاسو باید مناسب بیس قضیې وپیژنئ کوم چې د تکرار پای ته اجازه ورکوي. که دوی شتون ونلري، فعالیت ممکن د تل لپاره خپل ځان ته ادامه ورکړي.
دوهم، په لاس کې د سناریو پراساس، د مناسب ډول تکرار غوره کول کولی شي ډیر اغیزمن او ښکلي حلونه رامینځته کړي. هڅه وکړئ هغه څه ومومئ چې په لاس کې د ستونزې لپاره غوره کار کوي. کله چې د پراخ تکرار ژورو سره کار کوئ، د احتمالي خطرونو څخه خبر اوسئ لکه د سټیک اوور فلو.
یو ځواب ورکړئ ووځي