1、题目名称
Pow(x, n)(求指定数字x的整数次幂)
2、题目地址
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