मैं क्लोजर के लिए नया हूं और मुझे लगता है कि अब तक कोड लिखने का मेरा दृष्टिकोण "क्लोजर का तरीका" के अनुरूप नहीं है। कम से कम, मैं ऐसे लेखन कार्य रखता हूं जो बड़े मूल्यों के साथ StackOverflow त्रुटियों तक पहुंचते रहते हैं। मैंने रिकूर का उपयोग करने के बारे में सीखा है जो एक अच्छा कदम आगे बढ़ रहा है। लेकिन, 2500000 जैसे मूल्यों के लिए नीचे दिए गए कार्यों की तरह कार्य कैसे करें?मैं इस क्लोजर फ़ंक्शन को कैसे लिखूं ताकि यह ढेर को उड़ा न सके?
(defn fib [i]
(if (>= 2 i)
1
(+ (fib (dec i))
(fib (- i 2)))))
यह कार्य, मेरी आंखों के लिए, एक फाइबोनैकी जनरेटर के "सादा" कार्यान्वयन है। मैंने अन्य कार्यान्वयन देखा है जो अधिक अनुकूलित हैं, लेकिन वे जो करते हैं उसके संदर्भ में कम स्पष्ट हैं। अर्थात। जब आप फ़ंक्शन परिभाषा पढ़ते हैं, तो आप "ओह, फाइबोनैकी" नहीं जाते हैं।
किसी भी पॉइंटर्स की बहुत सराहना की जाएगी!
धन्यवाद! मैं इस पर विचार करूंगा। :) – bitops
अरे, बस वापस आना और कुछ मदद मांगना चाहता था: यदि मैं आपके फ़ंक्शन पर 92 से अधिक मान पास करता हूं, तो मुझे एक त्रुटि मिलती है। अंकगणित एक्सेप्शन पूर्णांक ओवरफ्लो clojure.lang.Numbers.throwIntOverflow (Numbers.java:1374) क्या मुझे कुछ याद आ रही है? – bitops
और बस स्पष्ट होने के लिए, मुझे अभी भी आपका जवाब पसंद है। :) – bitops