剑指offer十二之数值的整数次方

时间:2023-03-09 06:50:09
剑指offer十二之数值的整数次方

一、题目

  给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

二、思路

1、传统方法计算,时间复杂度O(n)

2、递归方式计算,时间复杂度O(logn)

当exponent为偶数时,例如求base^10,则result= base^5  *  base^5;

当exponent为奇数数时,例如求base^11,则result= base^5 *  base^5 * base;

接着采用递归的方法,计算base^5 即可。

三、代码

1、传统方法

public class Solution {
public double Power(double base, int exponent) { double result=1;
for(int i=0;i<Math.abs(exponent);i++){
result *=base;
} if(exponent<0){
result=1/result;
}
return result;
}
}

2、递归的方法

public class Solution {
public double Power(double base, int exponent) {
double result=0.0;
int n=Math.abs(exponent); if(n==0)
return 1; if(exponent==1)
return base; if(exponent==-1)
return 1/base; result =Power(base,n>>1)*Power(base,n>>1);
if((n&1)==1)
result*=base;
if(exponent<0)
result=1/result; return result;    }
}

-------------------------------------------------------------------------------------------------

参考链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00