gpt4 book ai didi

scala - 模式匹配 BigInts

转载 作者:行者123 更新时间:2023-12-01 09:27:04 24 4
gpt4 key购买 nike

此阶乘实现适用于特定大小的数字:

def factorial(n:Int):Int = n match {
case 0 => 1
case x => x * factorial(x - 1)
}

我尝试使用 BigInt 使其适用于像这样的任何大小的数字

val zero = BigInt(0)
def factorial(n:BigInt):BigInt = n match {
case zero => 1
case x => x * factorial(x - 1)
}

每次调用 factorial 都会返回 1,无论 n 的值如何。我认为这是因为第一种情况总是匹配的,并通过将其更改为

来证明它是匹配的
case zero => 22

并验证每个输入都返回 22。

所以我的两个问题是

  1. 为什么第一个 case 总是匹配?
  2. 有没有办法让这个函数的 BigInt 版本在坚持模式匹配的同时工作?

最佳答案

您应该将 zero 重命名为 Zero 或像这样使用它:

case `zero` => 1

关于scala - 模式匹配 BigInts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21578307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com