我是学习Kotlin的新手。我尝试在代码中使用尾部递归来计算阶乘,但是当我输入99999
时,输出为0
。这是我的代码:
fun main(){
println(factTailRec(99999))
}
tailrec fun factTailRec(number: Int, result: Int = 1): Long{
return if(number.toInt() == 1){
result.toLong()
} else {
factTailRec(number-1, result*number)
}
}
result
类型的Int
不足以保存实际结果值。您需要类似BigInteger
的内容:import java.math.BigInteger
import java.math.BigInteger.ONE
tailrec fun factTailRec(number: Int, result: BigInteger = ONE): BigInteger {
return if (number == 1) {
result
} else {
factTailRec(number - 1, result * BigInteger.valueOf(number.toLong()))
}
}
fun main() {
println(factTailRec(99999))
}