1、题目名称
Pow(x, n)(求指定数字x的整数次幂)
2、题目地址
https://leetcode.com/problems/powx-n/
3、题目内容
英文:Implement pow(x, n)
中文:给定底数x和指数n,求x的n次幂
4、解题方法1
在Java中,有一个偷懒的办法是这样实现的:
/**
* 功能说明:LeetCode 50 - Pow(x, n)
* 开发人员:Tsybius2014
* 开发时间:2015年8月8日
*/
public class Solution {
/**
* 计算x的n次幂
* @param x 底数
* @param n 指数
* @return 幂
*/
public double myPow(double x, int n) {
return Math.pow(x, n);
}
}
5、解题方法2
由于本题输入是一个整型,所以只需要考虑n为整数的情况。如果不采用函数Math.pow,就需要针对n大于0和n小于0做分类讨论,并使用递归的方法减少重复乘法的运算。
/**
* 功能说明:LeetCode 50 - Pow(x, n)
* 开发人员:Tsybius2014
* 开发时间:2015年8月8日
*/
public class Solution {
/**
* 计算x的n次幂
* @param x 底数
* @param n 指数
* @return 幂
*/
public double myPow(double x, int n) {
//特例,快速给出结果
if (n == 0) {
return 1;
} else if (n == 1) {
return x;
} else if (n == -1) {
return 1 / x;
}
//要考虑n为正数和负数两种情况
double temp;
if (n > 0) {
temp = myPow(x, n / 2);
if (n % 2 != 0) {
return temp * temp * x;
} else {
return temp * temp;
}
} else {
temp = 1 / myPow(x, -n / 2);
if (n % 2 != 0) {
return temp * temp / x;
} else {
return temp * temp;
}
}
}
}
END
本文详细介绍了Java中幂运算的两种实现方法:一种是直接调用Math.pow函数,另一种是实现快速幂算法。通过对比分析,阐述了每种方法的优缺点及适用场景。
594

被折叠的 条评论
为什么被折叠?



