آسان الفاظ میں ، تکرار کرنا فنکشن کال ہی سے ، مسئلے کو کال کرکے مسئلے کو حل کرنے کا ایک طریقہ ہے۔ تکرار 'لاطینی فعل سے ماخوذ ہے' بار بار ”، جس کا مطلب ہے کسی کام کو دوبارہ کرنا۔ یہ وہی ہوتا ہے جو تکرار کرنے والا فنکشن کرتا ہے ، یہ ایک ہی چیز کو بار بار کرتا ہے ، یعنی یہ خود کو یاد کرتا ہے۔ اس مضمون میں ، ہم ازگر میں تکرار کے بارے میں سیکھیں گے۔ اس بلاگ میں درج ذیل عنوانات ہیں۔
- ازگر میں تکرار کیا ہے؟
- خاتمہ کی حالت
- ازگر کی تکرار کی حد
- تکرار کے ساتھ چپٹی فہرستیں
- تکرار کے فوائد
- تکرار کے نقصانات
ازگر میں تکرار کیا ہے؟
تکرار اپنے لحاظ سے کسی چیز کا تعین کرنے کا عمل ہے۔ ہم جانتے ہیں کہ ازگر میں ، کوئی بھی فنکشن کسی دوسرے فنکشن کو کال کرسکتا ہے ، فنکشن خود بھی کال کرسکتا ہے۔ اس قسم کے افعال جو خود کو اس وقت تک کہتے ہیں جب تک کہ کسی خاص حالت کی تکمیل نہیں ہوتی ہے اسے تکرار افعال کہتے ہیں۔
آئیے کچھ مثالوں کو دیکھنے کے ل that دیکھیں کہ یہ کس طرح کام کرتا ہے ، اگر آپ کو ایک مثبت صحیح عدد فراہم کیا جاتا ہے تو یہ حقیقت پسندانہ ہوگا۔
- n! = n * (n-1) * (n-2) اور اسی طرح کی۔
- 2! = 2 * (2-1)
- ایک! = 1
- 0! = 0
- 4! = 4 * 3!
- 3! = 3 * 2!
- 2! = 2 * 1!
مندرجہ بالا اقدار کی جگہ لینے کے نتیجے میں مندرجہ ذیل اظہار ہوگا
جاوا میں اوور رائیڈنگ اور اوورلوڈنگ کے مابین فرق
- 4! = 4 * 3 * 2 * 1
ہمیں کسی فنکشن کی وضاحت کرنا ہے جس کی وجہ سے حق (این) کہا جاسکتا ہے جو مثبت عددی یا 0 کو اپنے پیرامیٹر کے طور پر لیتا ہے اور نواں فیکٹوریلیل لوٹاتا ہے ، ہم تکرار کا استعمال کرتے ہوئے یہ کیسے کرسکتے ہیں؟
آئیے دیکھیں ، تکرار کا استعمال کرتے ہوئے ایسا کرنے کے ل we ہمیں درج ذیل مساوات کی جانچ پڑتال کرنے کی ضرورت ہے
n! = n. (n-1). (n-2) & Hellip3.2.1
n! = n. (n-1)! # ہم مذکورہ بالا بیان کو اسی طرح لکھ سکتے ہیں
اب یہاں اگر ہم پیرامیٹر کے طور پر 2 پاس کرتے ہیں تو ہمیں ملے گا:
2! = 2.1! = 2
اسی طرح ، اگر ہم 1 پاس کرتے ہیں تو ہم حاصل کریں گے:
ایک! = 1.0! = 1
لیکن اگر ہم 0 پاس کرتے ہیں تو ، یہ ٹوٹ جاتا ہے
0! = 0. (- 1)! اور یہاں -1 کے لئے جزئیات کی وضاحت نہیں کی گئی ہے لہذا یہ صرف اقدار> 0 کے لئے کام کرتا ہے
تو ہمیں دو مقدمات لکھنا پڑے گا
1. این! = n. (n-1)! اگر n> = 1
2. 1 اگر این = 0
یہ تمام مثبت اعداد اور 0 کے لئے ایک مکمل حل ہے۔
خاتمہ کی حالت
ایک پنراورتی تقریب کو ختم کرنے کے لئے ایک اہم شرط کو پورا کرنا ہوتا ہے۔ ایسی حالت کی طرف بڑھ رہے ہیں جہاں مزید تکرار کے بغیر بھی مسئلے کو حل کیا جاسکے ، ، ایک بار بار چلنے والا فنکشن ختم ہوجائے گا ، اور اس مسئلے کو چھوٹے ذیلی مراحل میں کم کرکے۔ اگر تکرار ختم ہونے کی شرط کالوں میں پوری نہیں ہوتی ہے تو ایک تکرار ایک لامحدود لوپ میں ختم ہوسکتی ہے۔
فیکٹروری حالات:
- n = n * (n-1) کا حقیقت پسندانہ جب تک n 1 سے زیادہ ہے۔
- 1 اگر n = 0
ہم مندرجہ بالا حقائقی حالات کو ازگر کے کوڈ میں تبدیل کریں گے۔
ڈیف فیکٹ (این): اگر n == 1: واپسی این اور: ریٹرن این * فیکٹ (این -1)
آئیے ایک مثال لیتے ہیں ، کہتے ہیں کہ ہم 4 کی حقیقت پسندی تلاش کرنا چاہتے ہیں:
حقیقت (4) # یہ 4 * حقیقت (3) اور اسی طرح n == 1 تک لوٹ آئے گی۔
آؤٹ پٹ: 24
یہ اتنی کثرت سے بار بار استعمال ہونے والی مثال کے طور پر اپنی سادگی اور واضح ہونے کی وجہ سے استعمال ہوتا ہے۔ ہر قدم پر کسی مسئلے کی چھوٹی چھوٹی مثالوں کو حل کرنا جسے کمپیوٹر سائنس میں تکرار کہا جاتا ہے۔
ازگر کی تکرار کی حد
کچھ زبانوں میں ، آپ ایک لامحدود تکرار لوپ تشکیل دے سکتے ہیں لیکن ، ازگر میں ، بار بار چلنے کی حد ہوتی ہے۔ حد چیک کرنے کے لئے سیس ماڈیول سے درج ذیل فنکشن کو چلائیں۔ جو ازگر کے لئے تکرار کردہ سیٹ کی حد دے گا۔
کس طرح اشیاء کی ایک صف تیار کرنے کے لئے
sys.getrecursionlimit درآمد کریں ()
آؤٹ پٹ: 1000
آپ اپنی ضرورت کے مطابق سیس ماڈیول کی فنکشنسریسیئرنس لیمٹ () کا استعمال کرتے ہوئے بھی حد کو تبدیل کرسکتے ہیں ، اب آئیے ایک ایسی تقریب تشکیل دیں جو خود کو بار بار کہتے ہیں جب تک کہ اس کی حد سے تجاوز نہ ہوجائے اور معلوم ہوجائے کہ کیا ہوتا ہے:
Def recursive (): recursive () if __name__ == '__main__': recursive ()
اگر آپ مذکورہ کوڈ کو چلاتے ہیں تو آپ کو رن ٹائم مستثنیٰ ملے گا: رن ٹائم ایرر: زیادہ سے زیادہ تکرار گہرائی سے تجاوز کرگیا۔ ازگر آپ کو ایسا فنکشن بنانے سے روکتا ہے جو اختتام پذیر نہ ہونے والی لوٹنے میں ختم ہوتا ہے۔
تکرار کے ساتھ چپٹی فہرستیں
دوسری چیزیں جو آپ حقائق کے علاوہ تکرار کا استعمال کرتے ہوئے کرسکتے ہیں ، ان کو کہتے ہیں کہ آپ اس فہرست میں سے واحد تیار کرنا چاہتے ہیں جس میں گھوںسلا ہے ، یہ نیچے دیے گئے کوڈ کا استعمال کرکے کیا جاسکتا ہے۔
ڈیف فلیٹین (a_list ، فلیٹ_ لسٹ = کوئی نہیں): اگر فلیٹ لسٹ کوئی نہیں ہے: فلیٹ_ لسٹ = [] a_list میں آئٹم کے لئے: اگر isinstance (آئٹم ، لسٹ): فلیٹین (آئٹم ، فلیٹ_ لسٹ) اور: فلیٹ_ لسٹ.اپینڈ (آئٹم) فلیٹ لسٹ لوٹ آئے گی اگر ____ == '__main__': نیسڈڈ = [1،2،3، [4،5]، 6] x = چپٹا (گھرا ہوا) پرنٹ (x)
آؤٹ پٹ: [1،2،3،4،5،6]
مذکورہ کوڈ کو چلانے کے نتیجے میں انٹیجر لسٹ پر مشتمل انٹیجر لسٹ کی بجائے ایک ہی فہرست ہوگی جس کو ہم ان پٹ کے بطور استعمال کرتے ہیں۔ آپ دوسرے طریقوں کا استعمال کرتے ہوئے بھی وہی کام کرسکتے ہیں ، ازگر کے پاس کچھ ہے جسے itertools.chain () کہا جاتا ہے جس سے آپ فنکشن چین بنانے کے لئے استعمال شدہ کوڈ کو چیک کرسکتے ہیں () یہ ہی کام کرنا مختلف نقطہ نظر ہے جس طرح ہم نے کیا تھا۔
تکرار کے فوائد
تکرار والی تقریب میں کوڈ صاف اور خوبصورت ہے۔
تکرار کا استعمال کرتے ہوئے ایک جامع کام کو آسان ذیلی پریشانیوں میں توڑا جاسکتا ہے۔
تکرار کے ساتھ ترتیب پیدا کرنا کچھ گھوںسلا تکرار کے استعمال سے زیادہ آسان ہے۔
تکرار کے نقصانات
تکرار تقریب کے پیچھے منطق کی پیروی کرنا کبھی کبھی مشکل ہوسکتا ہے۔
بار بار آنے والی کالیں مہنگی (غیر فعال) ہوتی ہیں کیونکہ ان میں بہت زیادہ میموری اور وقت لگتا ہے۔
ڈیبگ کرنے کے ل Rec تعکراتی افعال سخت ہیں۔
اس مضمون میں ہم نے دیکھا ہے کہ تکرار کیا ہے اور ہم کس طرح مسئلے کے بیان سے تکرار افعال تیار کرسکتے ہیں ، ریاضی کے مطابق کسی مسئلے کے بیان کی وضاحت کیسے کی جاسکتی ہے۔ ہم نے حقیقت نگاری کے مسئلے کو حل کیا اور حقائق تلاش کرنے کے لئے درکار شرائط کا پتہ لگایا جس سے ہم اس شرائط کو ازگر کوڈ میں تبدیل کرنے میں کامیاب ہوگئے تھے جس سے آپ کو یہ تفہیم ملے گا کہ تکرار کس طرح کام کرتی ہے۔ میرے خیال میں یہ صاف ستھرا ہے کہ ڈیتھولرز کو ناقص تعمیر نو تکرار افعال تخلیق کرنے سے روکنے کے لئے آرتھن کی تکرار کی ایک اندرونی حد ہوتی ہے۔ ایک اہم چیز جس پر توجہ دیں وہ یہ ہے کہ ڈیبگ کرنا تکرار کرنا مشکل ہے کیوں کہ فنکشن خود ہی فون کرتا رہتا ہے۔