Scala阶乘函数的答案不是应该的

时间:2018-04-11 19:32:43

标签: scala recursion factorial

我正在学习考试,我很困惑为什么我在为函数调用4时得到24的结果。

scala> def fact(n:Int):Int = if (n<2) 1 else n*fact(n-1)
fact: (n: Int)Int

scala> fact(4)
res0: Int = 24

如果我是对的,那么答案应该不是

(4) * fact(4-1) = 12 ?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

请阅读如何计算factorial

答案 1 :(得分:0)

在我看来,你的代码完全正确。定义一些测试用例总是一个好主意 - 输入 - &gt;预期产出:

0! = 1

1! = 1

2! = 2 * 1! = 2

3! = 3 * 2! = 6

4! = 4 * 3! = 4 * 6 = 24