非递归快速幂(求一个数的n次幂)

数值的整数次方

http://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00

/*
时间复杂度为logn   
b^{9}=b*((b^2)^2)^2)   
递归思路:
当n&1不为0时; f(b,n)=f(b,n/2)*b  为奇数时。
当n&1为0时;  f(b,n)=f(b,n/2)    为偶数时。
*/
class Solution {
public:

    double Power(double b, int n) {
        if (n < 0) {
            b = 1 / b;
            n = -n;
        }//负数次方归正
        double x = b; // 记录x^0, x^1, x^2 ...
        double ret = 1.0;
        while (n) {
            if (n&1) {
                ret *= x; // 二进制位数是1的,乘进答案。
            }
            x *= x;
            n >>= 1;
        }
        return ret;
    }
};
全部评论

相关推荐

钱嘛数字而已:辅导员肯定不能同意,不然你出事了,他要承担责任。但是,脚和脑子都长在你自己身上,使用它还需要向辅导员报告么? 辅导员必须按流程拒绝你,然后你拿出成年人的态度,做自己的选择。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务