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平方

京公网安备 11010502036488号