《剑指Offer》12数值的整数次方

题目:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解法1:分三种情况,exponent大于0,exponent小于0,exponent等于0。
public class Solution {
    public double Power(double base, int exponent) {
        double result=1.0;  if(exponent>0) {  for(int i=0;i<exponent;i++) {  result=result*base;  }  }else if(exponent<0) {  exponent=-exponent;  for(int i=0;i<exponent;i++) {  result=result*base;  }  result=1/result;  }else {  result=1;  }  return result;  }
}
上面那种方法的时间复杂度为O(n),还有一种时间复杂度为O(logn)的方法。
public class Solution {
    public double Power(double base, int exponent) {
        double res=1.0;         if(exponent>0) {             res=Function(base, exponent);         }else if(exponent<0) {             exponent=-exponent;             res=1/Function(base, exponent);         }else {             res=1;         }         return res;     }     public double Function(double base, int exponent) {
        if (exponent==0) {
            return 1;
        }
        if (exponent==1) {
            return base;
        }             double result=Power(base, exponent>>1);             result*=result;             if ((exponent&1)==1) {                 result*=base;             }             return result;         }
}

全部评论

相关推荐

孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务