LeetCode-Pow(x,n)

leetcode 050 pow(x,n):求 x 的 n 次方

這個題目在練習的時候一開始做不出來,回家後再做 x 了一次總算是弄出來,但是就跟同事說的一樣,程式真的很醜,多一個測試案例就多一個 if

這絕對不是最佳解啊,由於數學都還給老師,指數早就忘光光,趁著這次的機會又溫習了一下,解題當然不能使用 Math.Pow(),這樣就太犯規了

解題

如果 n (次方數) 為偶數,答案應為 x 的 n / 2 次方 _ x 的 n / 2 次方,例如: 2^4 = 2^2 _ 2^2 = 4 _ 4 = 16
如果是奇數,答案應為偶數的解答再乘上一個 x,例如:2^5 = ( 2^2 _ 2^2 ) _ 2 = 16 _ 2 = 32
次方數的計算則利用遞迴處理,次方為負數的情況,例如:2^-3 = ( 1 / 2 _ 1 / 2 _ 1 / 2 ) = 1 / 8 = 1 / ( 2^3 )

1
2
3
4
5
6
7
8
9
10
11
12
class solution {
MyPow(x, n) {
return n > 0 ? pow(x, n) : 1 / pow(x, n);
}
}
function pow(x, n) {
if (n == 0) return 1;
let mid = pow(x, parseInt(n / 2));
return n % 2 == 0 ? mid * mid : mid * mid * x;
}

module.exports = solution;

Sample Code:GitHub