पुनरावृत्त संस्करण अधिक समय क्यों लेता है?


11

मैं http://programming.lispdream.com/blog/2011/06/recursion-vs-iteration/ पर देख रहा था और मैंने देखा कि फैक्टरियल फ़ंक्शन के पुनरावर्ती और पुनरावृत्ति कार्यान्वयन के उनके कार्यान्वयन पर, वास्तव में अधिक समय लगता है n = 1,000 दिया गया। मैं समझ नहीं पा रहा कि क्यों (वह नहीं समझाता, लेकिन कहता है कि यह पाठक के लिए एक अभ्यास है)। इस सब के लिए मेरे नएपन के लिए क्षमा करें।

जवाबों:


10

दो कार्यक्रम बराबर नहीं हैं। पुनरावर्ती संस्करण कंप्यूटिंग है

... (((१ * २) * ३) * ४ ... * n)

जबकि पुनरावृत्ति एक कंप्यूटिंग है

... (((n * (n-1)) * (n-2) ... * 1)

इस प्रकार इंटरएक्टिव मात्राएं पुनरावृत्त संस्करण के लिए और अधिक तेजी से बढ़ रही हैं और बड़ी संख्या की गणना जल्दी होती है जब इसमें शामिल संख्याएं छोटी होती हैं (1000 कम्प्यूटिंग के बिना बड़ी संख्या का कोई मतलब नहीं होता है और लिस्प बोली स्वचालित रूप से बड़ी संख्या में स्विच होती है)।


1

जब आप एक पुनरावर्ती एल्गोरिथ्म पुनरावृत्ति बनाते हैं, तो आपको परिणामों को ट्रैक करने वाले स्टैक को स्पष्ट रूप से लागू करना होगा। यह अधिनियम अतिरिक्त संचालन को जोड़ता है और स्टैक को पॉप करने के साथ काम करता है जो पुनरावर्ती एल्गोरिथ्म मुफ्त में प्राप्त करता है (अच्छी तरह से मुक्त करने के लिए काफी नहीं है लेकिन अतिरिक्त संचालन पुनरावृत्ति की लागत से अधिक में जोड़ता है)।


1
क्या आपने कार्यक्रमों को देखा? पुनरावृत्ति संबंधी तथ्य सभी में एक ढेर में हेरफेर नहीं करता है।
एपीग्रामग्राम

-1

मैं केवल अनुमान लगा सकता हूं, मुझे यह भी निश्चित नहीं है कि क्या वे बेंचमार्क सी या एसबीएलसी कोड से हैं। मेरा अनुमान है कि अपराधी परिवर्तनशील परिवर्तनशील है। 1000! एक बहुत बड़ी संख्या है, हो सकता है कि यह तेजी से आंतरायिकों के साथ ढेर हो जाए और एक कॉपी और ओवरराइट बनाने के लिए साफ हो जाए।


मुझे लगता है कि SBCL कोड से थे।
मार्टीनिकोबोड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.