रिकर्सन आणि आयटेशन दरम्यान फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 1 एप्रिल 2021
अद्यतन तारीख: 4 मे 2024
Anonim
[WiSDOM] निरीक्षणातून मूल्ये आणि धोरणे शिकणे
व्हिडिओ: [WiSDOM] निरीक्षणातून मूल्ये आणि धोरणे शिकणे

सामग्री


पुनरावृत्ती आणि पुनरावृत्ती दोन्ही वारंवार सूचनांच्या संचाची अंमलबजावणी करते. पुनरावृत्ती म्हणजे जेव्हा फंक्शनमधील स्टेटमेंट स्वतःस वारंवार कॉल करते. पुनरावृत्ती होते जेव्हा कंट्रोलिंग कंडीशन चुकीची होईपर्यंत लूप वारंवार कार्यवाही करते. पुनरावृत्ती आणि पुनरावृत्ती दरम्यानचा प्राथमिक फरक तो आहे पुनरावृत्ती ही एक प्रक्रिया आहे जी नेहमी फंक्शनवर लागू होते. द पुनरावृत्ती आम्हाला वारंवार कार्यान्वित करू इच्छित असलेल्या निर्देशांच्या संचावर लागू केले जाते.

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. निष्कर्ष

तुलना चार्ट

तुलनासाठी आधारपुनरावृत्तीIteration
मूलभूतफंक्शनच्या मुख्य भागातील विधान फंक्शनला स्वतः कॉल करते.सूचनांच्या संचाला वारंवार कार्यान्वित होण्यास अनुमती देते.
स्वरूपरिकर्सिव्ह फंक्शनमध्ये केवळ टर्मिनेशन अट (बेस केस) निर्दिष्ट केली जाते.शोधात प्रारंभ, स्थिती, नियंत्रण व्हेरिएबलमधील लूप आणि अद्ययावत (वाढ आणि घट) मध्ये स्टेटमेंटची अंमलबजावणी समाविष्ट होते.
समाप्तीरिकर्सन कॉल कार्यान्वित न करता फंक्शनला परत येण्यास भाग पाडण्यासाठी सशर्त विधानात फंक्शनच्या मुख्य भागामध्ये समाविष्ट केले जाते.एका विशिष्ट अटला येईपर्यंत पुनरावृत्ती स्टेटमेंट वारंवार कार्यान्वित केले जाते.
परिस्थितीजर फंक्शन (बेस केस) नावाच्या काही स्थितीत रूपांतरित होत नसेल तर ते अनंत पुनरावृत्तीकडे वळते.जर पुनरावृत्ती स्टेटमेंटमधील कंट्रोल कंडिशन कधीच चुकीची होत नाही, तर ती असीम पुनरावृत्ती होते.
अनंत पुनरावृत्तीअनंत पुनरावृत्ती सिस्टम क्रॅश होऊ शकते.अनंत पळवाट वारंवार CPU चक्र वापरते.
अर्ज केलारिकर्सन नेहमी फंक्शन्सवर लागू होते.आयटरेशन स्टेटमेंट्स किंवा "लूप्स" वर लागू केले जाते.
स्टॅकप्रत्येक वेळी फंक्शन कॉल केल्यावर नवीन स्थानिक व्हेरिएबल्स आणि पॅरामीटर्सचा संच संग्रहित करण्यासाठी स्टॅकचा वापर केला जातो.स्टॅक वापरत नाही.
ओव्हरहेडरिकर्सनमध्ये वारंवार कार्य केलेल्या कॉलचे ओव्हरहेड असतात.पुनरावृत्ती फंक्शन कॉलचे कोणतेही ओव्हरहेड नाही.
वेगअंमलबजावणीत धीमे.फाशीची अंमलबजावणी
कोडचा आकारपुनरावृत्ती कोडचा आकार कमी करते.Iteration कोड लांब करते.


रिकर्शन व्याख्या

सी ++ फंक्शनला त्याच्या कोडमध्ये कॉल करण्यास अनुमती देते. म्हणजे फंक्शनची व्याख्या स्वतःला फंक्शन कॉल करते. कधीकधी याला “परिपत्रक व्याख्या“. फंक्शनद्वारे वापरलेले स्थानिक व्हेरिएबल्स आणि पॅरामीटर्सचा संच प्रत्येक वेळी कार्य स्वतः कॉल केल्यावर नवीन तयार केला जातो आणि स्टॅकच्या शीर्षस्थानी संग्रहित केला जातो. परंतु प्रत्येक वेळी जेव्हा एखादा फंक्शन स्वतःला कॉल करतो तेव्हा त्या त्या फंक्शनची नवीन कॉपी तयार करत नाही. रिकर्सिव्ह फंक्शन कोडचा आकार लक्षणीय प्रमाणात कमी करत नाही आणि मेमरी उपयोगातसुद्धा सुधारणा करत नाही, परंतु पुनरावृत्तीच्या तुलनेत ते काही करते.

आवर्ती संपुष्टात आणण्यासाठी, फंक्शनला स्वतःला रिकर्सिव्ह कॉल न देता परत जाण्यास भाग पाडण्यासाठी आपण फंक्शनच्या परिभाषेत निवडक विधान समाविष्ट केले पाहिजे. रिकर्सिव्ह फंक्शनच्या परिभाषेत निवडक स्टेटमेंटची अनुपस्थिती, फंक्शनला एकदा म्हणतात असीम पुनरावृत्ती मध्ये कार्य करू देते.

चला फंक्शनसह रिकर्जन समजून घेऊ जे नंबरचे तथ्यात्मक परत करेल.

इंट फॅक्टोरियल (इंट नंबर) answer इंट उत्तर; जर (संख्या == 1) {परतावा 1; } अन्य {उत्तर = तथ्यात्मक (क्रमांक -1) * क्रमांक; // रिकर्सिव कॉलिंग} रिटर्न (उत्तर); }

वरील कोडमध्ये, दुसर्‍या भागामधील स्टेटमेंट रिकर्जन दाखवते, कारण स्टेटमेंटला फंक्शनल () म्हणतात ज्यामध्ये ते असते.


Iteration व्याख्या

आयटरेशन स्टेटमेंटमधील अट चुकीची होईपर्यंत सूचनांचे संचालन वारंवार कार्यान्वित करण्याची प्रक्रिया आहे. इट्रेशन स्टेटमेंटमध्ये इनिशिएशन, तुलना, इट्रेशन स्टेटमेंटमधील स्टेटमेंट्सची अंमलबजावणी आणि शेवटी कंट्रोल व्हेरिएबलचे अपडेट करणे समाविष्ट आहे. कंट्रोल व्हेरिएबल अद्ययावत झाल्यानंतर त्याची पुन्हा तुलना केली जाते आणि पुनरावृत्तीच्या स्टेटमेंटमधील अट चुकीची होत नाही तोपर्यंत प्रक्रिया पुन्हा होते. पुनरावृत्ती स्टेटमेंट्स “for” लूप, “जबकि” लूप, “डू-वूट” लूप आहेत.

व्हेरिएबल्स स्टोअर करण्यासाठी इट्रेशन स्टेटमेंट स्टॅक वापरत नाही. म्हणूनच रिकर्सिव्ह फंक्शनच्या तुलनेत इट्रेशन स्टेटमेंटची अंमलबजावणी वेगवान आहे. पुनरावृत्ती फंक्शन कॉलिंगचे पुनरावृत्ती कार्य देखील ओव्हरहेड नसतात जे पुनरावृत्ती फंक्शनपेक्षा अंमलात आणतात. जेव्हा नियंत्रण स्थिती चुकीची होते तेव्हा पुनरावृत्ती बंद केली जाते. पुनरावृत्ती विधानात नियंत्रण स्थिती नसल्यामुळे अनंत पळवाट येऊ शकते किंवा ते संकलनात त्रुटी असू शकते.

वरील उदाहरणांबद्दल पुनरावृत्ती समजून घेऊया.

इंट फॅक्टोरियल (इंट नंबर) answer इंट उत्तर = 1; // ला आरंभ आवश्यक आहे कारण त्यात आरंभ होण्यापूर्वी कचर्‍याचे मूल्य असू शकते (int t = 1; t> num; t ++) // पुनरावृत्ती {उत्तर = उत्तर * (टी); परतावा (उत्तर); }}

वरील कोडमध्ये हे फंक्शन पुनरावृत्ती स्टेटमेंटद्वारे संख्येचे तथ्यात्मक रिटर्न देते.

  1. पुनरावृत्ती म्हणजे जेव्हा प्रोग्राममधील एखादी पद्धत वारंवार कॉल करते, तर पुनरावृत्ती म्हणजे जेव्हा प्रोग्राममधील निर्देशांचा वारंवार कार्यवाही केला जातो.
  2. रिकर्सीव्ह मेथडमध्ये निर्देशांचा सेट, स्टेटमेंट कॉलिंग आणि टर्मिनेशन अट असते तर इट्रेशन स्टेटमेंटमध्ये इनिशिएलायझेशन, इन्क्रिमेंट, अट, इंस्ट्रक्शन ऑफ लूप आणि कंट्रोल व्हेरिएबल असते.
  3. एक सशर्त विधान पुनरावृत्तीच्या समाप्तीची आणि नियंत्रणाचे व्हेरिएबलचे मूल्य पुनरावृत्ती स्टेटमेंटची समाप्ती ठरवते.
  4. जर पद्धत संपुष्टात आणण्याची अट देत नसेल तर ती अनंत पुनरावृत्तीमध्ये प्रवेश करते. दुसरीकडे, जर कंट्रोल व्हेरिएबल कधीच टर्मिनेशन व्हॅल्यूकडे वळत नाही तर पुनरावृत्ती स्टेटमेंट अनंतपणे पुनरावृत्ती होते.
  5. अनंत पुनरावृत्ती सिस्टम क्रॅश होऊ शकते, तर अनंत पुनरावृत्ती सीपीयू चक्र घेते.
  6. रिकर्सन नेहमीच मेथडवर लागू होते तर इट्रेशन इंस्ट्रक्शनच्या सेटवर लागू होते.
  7. रिकर्शन दरम्यान तयार केलेले व्हेरिएबल्स स्टॅकवर साठवले जातात, तर पुनरावृत्तीसाठी स्टॅकची आवश्यकता नसते.
  8. पुनरावृत्ती पुनरावृत्ती फंक्शन कॉलिंगचे ओव्हरहेड कारणीभूत ठरते, तर पुनरावृत्तीमध्ये फंक्शन कॉलिंग ओव्हरहेड नसते.
  9. फंक्शन कॉलिंगच्या ओव्हरहेड एक्झिक्यूशनमुळे रिकर्सन धीमे होते, तर पुनरावृत्तीची अंमलबजावणी वेगवान असते.
  10. पुनरावृत्ती कोडचे आकार कमी करते तर पुनरावृत्ती कोड अधिक लांब करतात.

निष्कर्ष:

रिकर्सिव्ह फंक्शन लिहिणे सोपे आहे, परंतु पुनरावृत्तीच्या तुलनेत ते चांगले कामगिरी करत नाहीत तर पुनरावृत्ती लिहिणे कठीण आहे परंतु पुनरावृत्तीच्या तुलनेत त्यांची कामगिरी चांगली आहे.