, bir fraksiyonel veri türünü kullanmak için Haskell soruyorsunuz. Muhtemelen bu durumda bunu istemiyorsun. Int
veya Integer
gibi integral bir tür kullanılması tercih edilir. Bu yüzden aşağıdakileri yapmanızı öneririm: fact
işlevi için fact :: Integer -> Integer
gibi bir tür bildirim ekleyin. /
yerine quot
kullanın.
Yani kod aşağıdaki gibi görünmelidir: @leftaroundabout belirttiği gibi
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)
Ayrıca, muhtemelen bu binom sayıları hesaplamak için daha iyi bir algoritma kullanmak istiyorum.
_Don't_ bu şekilde nCr'yi hiç hesaplamayın. Faktöriyel olarak sonuçların iptal edileceği büyük terimler ürettiği için (bu formülden teorik olarak ayrılmaz bir sonuç elde etmenin tek sebebi) korkunç bir şekilde verimsizdir. Doğru yol, yalnızca iptal etmeyen terimleri çoğaltmak ve hiçbir şeyi bölmemek; o zaman kayan nokta hakkında endişelenmenize de gerek yok. – leftaroundabout
@leftaroundabout, neden bir cevap vermiyorsun? – dfeuer