《剑指offer》数值的整数次方

【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】

题目链接:?rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

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

思路

我们很容易想到,在指数为0或者正数的时候应该怎么处理,但是有时候我们会忽略负数的状况。

如果考虑到了负数,但是如果仅仅只是简单的处理,还是不能让代码达到完美,,我们要考虑两点,一旦负数是int型的边界值,那么这个数变成整数之后就超过了int的正数最大值,那么此时我们需要用unsigned来保存这个指数。

其次,当指数很大的时候,如果我们使用循环来计算次幂的话,会很耗时间,那么我们应该考虑优化的问题,这个时候我们就要使用快速幂来优化了。

class Solution{public:double quick_pow(double base,unsigned b){double ans = 1;while(b){if(b&1){ans = ans*base;b–;}b>>=1;base *=base;}return ans;}double Power(double base, int exp){if(fabs(exp-0.0)<0.00000001)return 1;if(base==0)return base;unsigned ee;ee = exp<0?-exp:exp;cout<<"ee = "<<ee<<endl;double ans = quick_pow(base,ee);if(exp>0)return ans;return 1.0/ans;}};

版权声明:本文为博主原创文章,如果转载,请注明出处

每一天都不可追回,所以更要珍惜每一寸光阴,

《剑指offer》数值的整数次方

相关文章:

你感兴趣的文章:

标签云: