为什么 Haskell 中的以下阶乘代码有效?
Why is the following factorial code in Haskell working?
factorial n :: (Integral a) => a -> a
factorial n = n * factorial(n-1)
上述代码有效。对于阶乘 (n=1)=1 但对于阶乘 (n=0)=0。如果是这种情况,那么为什么它适用于 n(>0) 的任何值。我的问题不应该是每个输出都是 0 吗?
这不是正确的 Haskell 代码。
首先,类型签名是无效的语法——它应该是:
fact :: (Integral a) => a -> a
其次,执行该函数不会停止,因为它没有 "stop" 条件。
factorial n :: (Integral a) => a -> a
factorial n = n * factorial(n-1)
上述代码有效。对于阶乘 (n=1)=1 但对于阶乘 (n=0)=0。如果是这种情况,那么为什么它适用于 n(>0) 的任何值。我的问题不应该是每个输出都是 0 吗?
这不是正确的 Haskell 代码。
首先,类型签名是无效的语法——它应该是:
fact :: (Integral a) => a -> a
其次,执行该函数不会停止,因为它没有 "stop" 条件。