标签:
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
标签:
原文地址:http://my.oschina.net/Tsybius2014/blog/489559