天天看點

LeetCode_Math_50. Pow(x, n)【縮小誤差,分治】【java】【中等】

目錄

​​一,題目描述​​

​​中文描述​​

​​示例與說明​​

​​二,解題思路​​

​​三,AC代碼​​

​​Java​​

​​四,解題過程​​

​​第一搏​​

一,題目描述

中文描述

實作 pow(x, n) ,即計算 x 的 n 次幂函數(即,xn)。

示例與說明

LeetCode_Math_50. Pow(x, n)【縮小誤差,分治】【java】【中等】

來源:力扣(LeetCode)

連結:​​​https://leetcode-cn.com/problems/powx-n​​ 著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

二,解題思路

舉個例子。

當求2^10時,隻需求出2^5,然後直接return (2^5) * (2^5)

同理,求2^5時,隻需求出2^2,然後return (2) * (2^2) * (2^2)即可。

求2^1時,直接傳回2即可。

需要注意!!!

三,AC代碼

Java

class Solution {
    public double myPow(double x, int n) {
        if (x == 0) return 0;
        if (n < 0) return 1 / getPow(x, 0 - n);// 當n為負時,計算1 / (x^n),而不是(1/x)^n
        else return getPow(x, n);
    }
    public double getPow(double x, int n) {
        if (x == 0) return 0;
        else if (n == 0) return 1;
        else if (n == 1) return x;
        else {
            double ans = getPow(x, n / 2);
            if (n % 2 == 0) return ans * ans;
            else return x * ans * ans;
        } 
    }
}      

四,解題過程

第一搏