题目要求
此处为题目链接
即用自己的代码实现指数运算。
指数运算一般有两种情况,即指数为整数和指数为负数的情况。指数为负数即求其倒数。
思路一:二分法计算
这题的思路我之前的一篇博客思路基本相同。有兴趣的可以直接翻看那篇博客再思考一下这题。代码如下
public double myPow(double x, int n) {
if(x==0) return 0;
if(n==0) return 1;
x = n>0 ? x : 1/x;
n = Math.abs(n);
if(n%2!=0){
return x*myPow(x, n-1);
}
long temp = 1;
double result = x;
while(n >= (temp+temp)){
temp += temp;
result *= result;
}
return result*myPow(x, n-(int)temp);
}
思路二:递归
递归的方法在大多数情况下比较消耗存储空间,因为会保留上一个结果的所有情况和指向子函数的指针。所以在能转换为循环的情况下还是最好使用循环来解决。
double myPow(double x, int n) {
if(n<0) return 1/x * myPow(1/x, -(n+1));
if(n==0) return 1;
if(n==2) return x*x;
if(n%2==0) return myPow( myPow(x, n/2), 2);
else return x*myPow( myPow(x, n/2), 2);
}
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。