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号