题目:不使用库函数,求一个整数的整数次方
分析:
1.第一种思路,在一个循环内完成
代码如下
double Power(double base, int exponent) {
double ret = 1.0;
for(int i=1; i<=exponent; i++)
ret *= base;
return ret;
}2.问这个问题的人真正的意思一般希望你能给出更高效的解法
思路2:利用递归的思想完成运算
如果指数是偶数时,每次把运算分为两半,如果是奇数时,则分为最大偶数的一般,最后再乘一次基数
代码如下:
public static double pow(double base,int exponent){
if (base==0 && exponent==0){
throw new RuntimeException("给定的参数不合法");
}
if(exponent == 0){
return 1;
}
int exp = exponent;
//先把指数都变为正整数
if(exponent < 0){
exp = -exp;
}
//递归的时候每次把运算分为两半
double result = getPow(base,exp);
//如果指数为负数,则求倒数
if(exponent <0){
result =1/result;
}
return result;
}
public static double getPow(double base,int exponet){
if(base==0){
return 0;
}
if (exponet == 1){
return base;
}
double result = getPow(base,exponet>>1);
result *= result;
if (exponet %2 !=0){
result = result * base;
}
return result;
}
博客探讨了如何在不使用库函数的情况下,通过循环和递归两种方法计算一个整数的整数次方。第一种方法利用循环,第二种方法采用递归思想,特别是处理指数为偶数和奇数的情况。
727

被折叠的 条评论
为什么被折叠?



