मैं pgaur और rickerbh के साथ सहमत हूँ, पुनरावर्ती-रिट्रेसमेंट की जटिलता O (2 ^ n) है।
मैं नहीं बल्कि सरलीकृत द्वारा एक ही निष्कर्ष पर आया था लेकिन मेरा मानना है कि अभी भी मान्य तर्क है।
सबसे पहले, यह पता लगाने के बारे में है कि Nth रिटेलर संख्याओं की गणना करते समय कितनी बार पुनरावर्ती फ़ुटबॉल फ़ंक्शन (अब से) कहा जाता है। यदि इसे 0 से n के क्रम में प्रति बार एक बार कॉल किया जाता है, तो हमारे पास O (n) है, अगर इसे प्रत्येक संख्या के लिए n बार कहा जाता है, तो हमें O (n * n), या O (n ^ 2) मिलता है। और इसी तरह।
इसलिए, जब F () को नंबर n के लिए कहा जाता है, तो F और () को 0 के बीच दिए गए नंबर के लिए कहा जाता है, जबकि हम 0 के करीब आते हैं।
पहली धारणा के रूप में, यह मुझे लगता है कि अगर हम इसे एक दृश्य तरीके से डालते हैं, तो प्रति बार एफ () प्रति यूनिट एक ड्राइंग को एक दी गई संख्या के लिए कहा जाता है, गीले को एक प्रकार का पिरामिड आकार मिलता है (अर्थात, अगर हम इकाइयों को क्षैतिज रूप से केंद्र में रखते हैं। )। कुछ इस तरह:
n *
n-1 **
n-2 ****
...
2 ***********
1 ******************
0 ***************************
अब, सवाल यह है कि n के बढ़ते ही इस पिरामिड का आधार कितना तेज है?
चलो एक वास्तविक मामला लेते हैं, उदाहरण के लिए एफ (6)
F(6) * <-- only once
F(5) * <-- only once too
F(4) **
F(3) ****
F(2) ********
F(1) **************** <-- 16
F(0) ******************************** <-- 32
हम देखते हैं कि एफ (0) को 32 बार कहा जाता है, जो 2 ^ 5 है, जो इस नमूना मामले के लिए 2 ^ (n-1) है।
अब, हम यह जानना चाहते हैं कि F (x) को कितनी बार बुलाया जाता है, और हम देख सकते हैं कि F (0) को कितनी बार बुलाया जाता है।
अगर हम मानसिक रूप से F (6) से F (2) की सभी लाइनों को F (1) लाइन में ले जाते हैं, तो हम देखते हैं कि F (1) और F (0) लाइनें अब लंबाई में बराबर हैं। जिसका अर्थ है, कुल समय F () कहा जाता है जब n = 6 2x32 = 64 = 2 ^ 6 है।
अब, जटिलता के संदर्भ में:
O( F(6) ) = O(2^6)
O( F(n) ) = O(2^n)