【问题标题】:Scala factorial function answer not what it should beScala阶乘函数答案不是它应该是什么
【发布时间】:2018-09-21 19:32:36
【问题描述】:

我正在为考试而学习,但我很困惑为什么在调用函数 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 ?

非常感谢任何帮助。

【问题讨论】:

  • 不,根据那个函数应该是24
  • 您能否详细说明原因? @smac89
  • if (4&lt;2) 1 else 4 * (if (3 &lt; 2) 1 else 3 * (if (2 &lt; 2) 1 else 2 * (if (1 &lt; 2) 1))) -&gt; 4 * 3 * 2 * 1 = 24
  • 我投票决定将此问题作为题外话结束,因为它完全基于发帖人的概念错误。

标签: scala recursion factorial


【解决方案1】:

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

0! = 1

1! = 1

2! = 2 * 1! = 2

3! = 3 * 2! = 6

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 2019-11-14
    • 2015-12-29
    • 1970-01-01
    • 2017-07-07
    • 2021-08-08
    • 2011-04-26
    • 2020-02-22
    相关资源
    最近更新 更多