/
आपरेशन का उपयोग करके आप एक भिन्नात्मक डेटा प्रकार का उपयोग करने के Haskell पूछ रहे हैं। आप शायद इस मामले में नहीं चाहते हैं। Int
या Integer
जैसे अभिन्न प्रकार का उपयोग करना बेहतर है। तो मैं निम्नलिखित करने का सुझाव देता हूं: 1. fact
फ़ंक्शन के लिए एक प्रकार की घोषणा जोड़ें, fact :: Integer -> Integer
जैसे 2. /
के बजाय quot
का उपयोग करें।
तो अपने कोड इस तरह दिखना चाहिए:
fact :: Integer -> Integer
fact 0 = 1
fact x = x * fact (x-1)
place :: Integer -> Integer -> Integer
place m n = (fact m) `quot` (fact n) * (fact (m-n))
main = do
print (place 0 0)
इसके अलावा, जैसा @leftaroundabout ने बताया, तो आप शायद उन द्विपद संख्या की गणना के लिए एक बेहतर एल्गोरिथ्म का उपयोग करना चाहते।
_Don't_ कभी भी इस तरह से एनसीआर की गणना नहीं करता है। यह बेहद अक्षम है, क्योंकि फैक्टोरियल भारी शर्तों को उत्पन्न करता है जिसके परिणामस्वरूप वैसे भी रद्द हो जाएगा (यही कारण है कि आप सूत्र से सैद्धांतिक रूप से अभिन्न परिणाम प्राप्त करते हैं)। सही तरीका केवल गैर-रद्द करने वाले शब्दों को गुणा करना है, और कुछ भी विभाजित नहीं करना; तो आपको फ्लोटिंग पॉइंट के बारे में चिंता करने की आवश्यकता नहीं है। – leftaroundabout
@ बाएंअराउंडबाउट, आप इसे उत्तर क्यों नहीं देते? – dfeuer