小编Eli*_*ior的帖子

为大输入返回负数的阶乘函数

我的阶乘函数似乎适用于 1 到 6 之间的数字,但不适用于比 6 大得多的数字,例如以 21 开头!结果是否定的。

我不明白为什么。这是我的功能:

factorial :: Int -> Int
factorial 0 = 1
factorial 1 = 1
factorial num = num * factorial( num - 1)
Run Code Online (Sandbox Code Playgroud)

这是我的二项式系数函数,它调用我的阶乘函数(也许问题来自这个?):

binomialCoef :: Int -> Int -> Int
binomialCoef n 1 = n
binomialCoef n k = factorial n `div` 
                        ((factorial k) * factorial (n - k))
Run Code Online (Sandbox Code Playgroud)

haskell

5
推荐指数
1
解决办法
102
查看次数

由 try 产生的歧义类型

我试图在打开文件时做一些错误处理,以确保文件存在/可读。这是我的尝试:

init struct = do
    str <- try $ readFile (filePath struct)
    case str of
        Left exception -> print exception
        Right content -> execute content struct
Run Code Online (Sandbox Code Playgroud)

(Struct 是一种数据结构,我在其中保留文件路径和其他变量)。我收到此错误:

使用 'try' 引起的不明确的类型变量 'a0' 阻止了约束 '(Exception a0)' 的解决。可能的解决方法:使用类型注释来指定 'a0' 应该是什么。

但我只是不明白如何解决它。

haskell

1
推荐指数
1
解决办法
53
查看次数

标签 统计

haskell ×2