這階乘實現適用於人數達到一定規模:模式匹配BigInts
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)
}
每個呼叫到階乘無論n的值是多少,都返回1。我認爲這是因爲第一種情況下總是匹配,並證明它是如此,改成
case zero => 22
和驗證22,每輸入返回。
所以我問題是
- 爲什麼第一種情況下總是匹配?
- 有沒有辦法讓這個函數的BigInt版本工作,同時堅持模式匹配?
您也可以使VAL開始用大寫字母,比如'Zero'。 – dhg