題目: LeetCode - 50. Pow(x, n)

題目說明

設計一個 pow() 函數。

解題思路

使用遞迴的觀念,先假設函式能取得 n / 2 次方的正確答案,此時若 n 為 2 的倍數,代表答案為 n / 2 次方的答案相乘,否則若是 n 大於 0,代表還要再乘一次 x,若 n 為負數則要除以一次 x

參考解法

1
2
3
4
5
6
7
8
9
10
class Solution {
public:
double myPow(double x, int n)
{
if(!n) return 1;
auto tmp = myPow(x, n / 2);
if(!(n % 2)) return tmp * tmp;
return n > 0 ? x * tmp * tmp : tmp * tmp / x;
}
};