import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param x double浮点型
     * @param n int整型
     * @return double浮点型
     */
    public double myPow(double x, int n) {
        if (n == 0) {
            return 1; // 任何数的0次幂都等于1
        }

        if (n < 0) {
            x = 1 / x; // 如果n为负数,将x变为其倒数
            n = -n; // 将n变为其绝对值
        }

        if (n % 2 == 0) {
            return myPow(x * x, n / 2); // 如果n为偶数,则将n折半,并将x平方
        } else {
            return x * myPow(x * x, (n - 1) /
                             2); // 如果n为奇数,则将n减1折半,并将x平方
        }
    }
}

本题知识点分析:

1.递归

2.数学模拟

本题解题思路分析:

1.如果n==0,直接返回1

2.如果n<0,需要做倒数的处理,先把x转为倒数,然后n转为整数

3.如果n>0,如果n为偶数,则将n折半,并将x平方,如果n为奇数,则将n减1折半,并将x平方

本题使用编程语言: Java