2012-11-22 121 views
1

我總是得到「1」的結果。 :(
哪些錯誤使用此功能Scala:尾遞歸函數

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) 
    } 

回答

7

你這麼取代:case 0 => result

+0

...因爲你'減少每次調用exp',並且當它到達'0' ,你將返回'1'而不是累計結果。 – nietaki

+3

我認爲你的意思是'case 1 => result'。你仍然需要'case 0 => 1'來讓電源正常工作。 – DaoWen