جاوا میں تکرار اور لوپ کے پیشہ اور نقصانات

Pros Cons Recursion



جاوا میں تکرار اور لوپ کے پیشہ اور نقصانات

تعارف:
آپ اپنے ہاتھ میں چابی کے ساتھ ایک دروازہ کھولتے ہیں ، اور آپ کو معلوم ہوتا ہے کہ آپ کے سامنے ایک دروازہ ہے ، پھر آپ چابی سے دروازہ کھولتے ہیں ، اور پھر آپ کو ایک دروازہ پھر نظر آتا ہے۔ ... لیکن جب آپ کسی دروازے تک جاتے ہیں تو آپ کو معلوم ہوتا ہے کہ دیوار کے سامنے جانے کا کوئی راستہ نہیں ہے ، آپ اصل راستہ واپس کرنے کا انتخاب کرتے ہیں - یہ تکرار ہے۔
لیکن اگر آپ کوئی دروازہ کھولتے ہیں تو ، آپ کو یہ بھی معلوم ہوتا ہے کہ سامنے ایک دروازہ ہے ، اور پھر آپ اگلا دروازہ کھولتے ہیں ..... لیکن کبھی بھی اختتام کو ہاتھ نہیں لگایا - یہ لوپ ہے۔
سیدھے سادے الفاظ: لوپوں کا واپس جانا نہیں ہوتا ، اور پیچھے جانے کے لئے تکرار ہوتی ہے (کیوں کہ ختم ہونے کی شرط ہے)۔
لوپ: جب کسی خاص حالت کی تکمیل ہوتی ہے تو ایک عمل (لوپ باڈی) کو دہرایا جاتا ہے۔
تکرار: ایک طریقہ کار میں خود کو بلانے کا ایک طریقہ۔
پنراورتی ساخت دو حصوں پر مشتمل ہے:
1. تکرار کرنے والا ہیڈر: جب اس کے اپنے طریقہ کار کو کال نہیں کرتا ہے ، یعنی ، متواتر اختتامی حالت۔ اگر وہاں کوئی پنرقاتی ہیڈر نہیں ہے تو ، پروگرام لامحدود لوپ میں آجائے گا۔
2. تکرار کرنے والا جسم: جب آپ کو اپنا طریقہ کار کال کرنے کی ضرورت ہو۔
ٹھیک ہے ، کوئی اور بکواس نہیں ، ابھی کوڈ (حقائق کا حساب لگانے کا طریقہ) پر آجائیں۔



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 29 31 31 33 33 34 35 36 37 38 39 40 package com.bjwyj.method /*** Comparison of recursion and loop* @author **/ public class TestRecursion {public static void main(String[] args) {//The following call to the currentTimeMillis() method under System is just to show that recursive calls are more time consuming than loop calls.long l1 = System.currentTimeMillis() System.out.println(factorial( 5 ))long l2 = System.currentTimeMillis()System.out.println( 'Recursive calculation of factorial time-consuming:' +(l2-l1))System.out.println( '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$' )long time1 = System.currentTimeMillis()System.out.println(factorialLoop( 5 ))long time2 = System.currentTimeMillis()System.out.println( 'Cycle calculation factorial time-consuming:' +(time2-time1))}/ / Use recursive definition method to calculate factorialpublic static long factorial( int num) {if (num== 1 ) { //Recursive headreturn 1} else {return num*factorial(num- 1 ) //Recursive body}}/ / Use the loop definition to calculate the factorial methodpublic static long factorialLoop( int n) {int result = 1/ / Receive calculation resultswhile (n> 1 ) {result *= n*(n- 1 ) / / To achieve the calculation of the result of the multiplication operationn -= 2/ / Each time minus 2, to achieve the iterative operation of the number}return result} }

کے نتائج:



1 2 3 4 5 120 Recursively calculate the factorial time: 1 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 120 Cycle calculation factorial time: 0

جیسا کہ نتائج سے دیکھا جاسکتا ہے کہ لوورنگ الگورتھم کے استعمال سے تکرار الگورتھم کا استعمال زیادہ وقت لگتا ہے۔
تکرار الگورتھم کے فوائد اور نقصانات کا بہتر موازنہ کرنے کے لئے ، مذکورہ بالا جبکہ لوپ کو مکرر الگورتھم کے ساتھ موازنہ کیا جائے۔
پہلے مذکورہ بالا بار بار چلنے والے طریقہ کار کے نفاذ کے عمل کا تجزیہ کریں ، جیسا کہ ذیل میں دکھایا گیا ہے:



لوپ کے طریقہ کار پر عمل درآمد مندرجہ ذیل ہے:



یہاں ، واضح نظر آنے کے لئے ، یہ اسٹیک میموری میں پھانسی کے عمل کو آسانی سے کھینچتا ہے (تاکہ ڈرائنگ کو سمجھنے میں آسانی ہو)۔

خلاصہ:
اسٹیک بنیادی طور پر اسٹیک فریموں کو اسٹور کرنے کے لئے استعمال ہوتا ہے۔ جب بھی کوئی طریقہ عمل میں لایا جاتا ہے ، ایک پش آپریشن ہوگا۔ لہذا ، جب بار بار چلنے لگے تو ، زیادہ اسٹیک فریمز موجود ہیں ، اور تکرار سے میموری پر اثر پڑے گا۔ بہت مہنگی میموری۔ لوپ کا استعمال ایک ایسا طریقہ کار کرتا ہے جو اسٹیک فریم کو ایک بار دھکیل دیتا ہے اور اس میں صرف ایک اسٹیک فریم ہوتا ہے ، لہذا اس سے میموری کی بچت ہوتی ہے۔

اصل پتہ https://www.cnblogs.com/wuyongji/p/10503391.html