欢迎访问宙启技术站
智能推送

使用Haskell编写一个函数来计算一个整数的阶乘。

发布时间:2023-12-10 08:46:52

下面是使用Haskell编写的函数来计算一个整数的阶乘:

factorial :: Integer -> Integer
factorial n
    | n < 0     = error "阶乘不适用于负数"
    | n == 0    = 1
    | otherwise = n * factorial (n - 1)

这个函数的递归定义使得它能够计算任意非负整数的阶乘。函数的类型声明说明了这个函数接受一个整数作为输入,并返回一个整数作为输出。

函数内部使用了模式匹配来处理不同情况。首先,如果输入的整数小于0,那么函数会抛出一个错误。然后,如果输入的整数为0,那么函数会返回1,因为0的阶乘被定义为1。最后,如果输入的整数为其他正整数,函数会返回输入整数乘以(输入整数-1)的阶乘。

以下是使用例子:

main :: IO ()
main = do
    putStrLn "请输入一个整数:"
    input <- getLine
    let n = read input :: Integer
    let result = factorial n
    putStrLn ("阶乘结果为:" ++ show result)

这个例子中,我们使用了IO操作来获取用户输入的整数,并通过read函数将字符串转换为整数。然后,我们使用factorial函数计算阶乘,并将结果打印到终端。

请注意,由于阶乘的增长速度非常快,输入较大的整数可能会导致计算时间过长甚至造成程序崩溃。