50. Pow(x, n)

1.問題

  • 實作pow(x, n)

2.想法

  • 提問

    • n, x的範圍

  • function header, parameter

  • test input

  • 說明想法

    • 次方的base case為n = 0, 結果為1

    • n > 0

      • n為奇數時則結果為x * pow(x, n - 1) * pow(x, n - 1)

        n為偶數時則結果為 pow(x, n - 1) * pow(x, n - 1)

    • n < 0

      • n為奇數時則結果為1 / x * pow(x, n - 1) * pow(x, n - 1)

  • 測試計算複雜度

3.程式碼

class Solution {
public:
    double myPow(double x, int n) {
        if (n == 0) {
            return 1;
        }

        double half = myPow(x, n / 2);
        
        
        //n is an even and postitive number
        if (n % 2 == 0) {
            return half * half;    
        } 
        
        //n is a positive number
        if (n > 0) {
            return half * half * x;
        }
        //n is a negative number
        return half * half / x;
        
    }
};

Last updated