实现函数 double Power(double base, int exponent),求base的exponent次方。
注意:
1.保证base和exponent不同时为0。
2.不得使用库函数,同时不需要考虑大数问题
3.有特殊判题,不用考虑小数点后面0的位数。
具体实现:文章来源:https://www.toymoban.com/news/detail-669920.html
double Power(double base, int exponent) {
double ret=1;
int flag=exponent<0?1:0;
while(abs(exponent))
{
if(abs(exponent)%2==1)
ret*=base;
base*=base;
exponent/=2;
}
if(flag)
{
ret=1/ret;
}
return ret;
}
本方法中利用不断扩大原本的base,实现在O(logn)的时间复杂度。其中判断当前指数绝对值是否是2的整数倍,是因为下面的base*=base只能实现当原本指数为偶数时的变换,因此当指数是奇数时,要把多出来那一个单独乘进去。文章来源地址https://www.toymoban.com/news/detail-669920.html
到了这里,关于求数值的整数次方(模拟pow函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!