Scala:尾递归功能

时间:2012-11-22 22:48:00

标签: function scala tail-recursion pow

我总是得到“1”。 :(
这个功能怎么了?

    def power(base: Int, exp: Int): BigInt = {
        def _power(result: BigInt, exp: Int): BigInt = exp match {
            case 0 => 1
            case _ => _power(result*base, exp-1)
        }
        _power(1, exp)
    }

2 个答案:

答案 0 :(得分:7)

你必须这样替换:case 0 => result

答案 1 :(得分:0)

可能与OP不相关,但是我以这个答案为例,该版本适用:

def power(base: Int, exp: Int): BigInt = {
    def _power(result: BigInt, exp: Int): BigInt = exp match {
        case 0 => 1
        case 1 => result
        case _ => _power(result*base, exp-1)
    }
    _power(base, exp)
}