【编程题】数值的整数次方(Java实现)
题目来源
剑指offer第12题
https://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00?tpId=13&tqId=11165&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
题目解答
方法一,用循环
public class Solution {
public double Power(double base, int exponent) {
if(base==0)
return 0;
if(exponent==0)
return 1;
boolean signal=false;
double mul=1;
if(exponent<0){
signal=true;
exponent=-exponent;
}
for(int i=0;i<exponent/2;i++){
mul*=base;
}
mul*=mul;
if((exponent&1)!=0)
{
mul*=base;
exponent--;
}
if(signal)
return 1/mul;
return mul;
}
}
方法二,用递归
public class Solution {
public double Power(double base, int exponent) {
if(base==0)
return 0;
if(exponent==0)
return 1;
if(exponent==1)
return base;
boolean signal=false;
double mul=1;
if(exponent<0){
signal=true;
exponent=-exponent;
}
double x=Power(base,Integer.valueOf(exponent/2));
mul=x*x;
if((exponent&1)!=0)
{
mul*=base;
exponent--;
}
if(signal)
return 1/mul;
return mul;
}
}