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