जेली , 5 बाइट्स
_Ḟ1+¡
यह बिल्ट-इन के बिना एक पुनरावृत्त समाधान है। यह चुनौती की कल्पना के रूप में एक ही अनुक्रमण का उपयोग करता है।
इसे ऑनलाइन आज़माएं!
पृष्ठभूमि
चलो च समारोह चुनौती कल्पना और में परिभाषित किया जा एफ फाइबोनैचि समारोह सामान्य रूप में परिभाषित किया (यानी, के साथ एफ (0) = 0 )। एक गैर-नकारात्मक पूर्णांक n के लिए , हमारे पास f (n) = F (n + 1) है । जब 0 f x <1 , चुनौती युक्ति f (n + x) को f (n) + (f (n + 1) - f (n)) x के रूप में परिभाषित करती है ।
स्पष्ट रूप से, यह बस आधार के मामलों को प्रभावित करता है, लेकिन पुनरावर्ती सूत्र नहीं, अर्थात, f (n) = f (n - 1) + f (n - 2) को धारण करता है क्योंकि यह F के लिए होता है । इसका मतलब है कि हम गैर-पूर्णांक तर्कों के लिए परिभाषा को आसान f (n) = f (n) + f (n - 1) x के लिए सरल कर सकते हैं ।
जैसा कि अन्य लोगों ने अपने उत्तर में बताया है, पुनरावर्ती संबंध गैर-पूर्णांक तर्कों के लिए भी है। यह आसानी से सत्यापन योग्य है, जैसा कि
चूँकि f (0) = f (1) = 1 , f लगातार अंतराल में [0, 1] और f (0 + x) = 1 सभी x के लिए । इसके अलावा, f (-1) = F (0) = 0 , इसलिए f (-1 + x) = f (-1) + (f (0) - f (-1)) x = 0 + 1x = x । ये आधार मामले [-1, 1) में आते हैं , इसलिए पुनरावर्ती सूत्र के साथ मिलकर वे एफ की परिभाषा को पूरा करते हैं ।
यह काम किस प्रकार करता है
पहले की तरह, n + x हमारे विवादास्पद कार्यक्रम का एकमात्र तर्क है।
¡
एक त्वरित है , जिसका अर्थ है कि यह अपनी बाईं ओर कुछ लिंक का उपभोग करता है और उन्हें एक क्विकलिंक में बदल देता है । ¡
विशेष रूप से या तो एक या दो लिंक का उपभोग करता है।
<F:monad|dyad><N:any>
लिंक N को कॉल करता है , r को लौटाता है , और F को कुल r बार निष्पादित करता है ।
<nilad|missing><F:monad|dyad>
अंतिम कमांड-लाइन तर्क (या उनकी अनुपस्थिति में एसटीडीआईएन से एक इनपुट) पर आर सेट करता है और एफ को कुल आर बार निष्पादित करता है ।
चूंकि 1
एक निलाद (तर्कों के बिना एक कड़ी) है, दूसरा मामला लागू होता है, और n बार +¡
निष्पादित होगा (एक गैर-पूर्णांक तर्क नीचे गोल है)। प्रत्येक कॉल करने के बाद+
+
, क्विकलिंक के बाएं तर्क को रिटर्न वैल्यू के साथ बदल दिया जाता है, और राइट तर्क को लेफ्ट के पिछले मूल्य के साथ।
पूरे कार्यक्रम के लिए, Ḟ
इनपुट फ़्लोरिंग, एन उपज ; फिर _
इनपुट से परिणाम घटाएं, ** x, जो रिटर्न वैल्यू बन जाता है।
1+¡
फिर कॉल +¡
- जैसा कि पहले वर्णित है - बाएं तर्क 1 = एफ (0 + x) और दाएं तर्क x = एफ (-1 + x) के साथ , जो वांछित आउटपुट की गणना करता है।