剑指offer系列——12.数值的整数次方

Posted xym4869

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer系列——12.数值的整数次方相关的知识,希望对你有一定的参考价值。

Q:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。
C:时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
T:
1.刚刚学习了快速幂,正好用上:https://www.cnblogs.com/xym4869/p/12240806.html
这个题要注意,exponent可能为负。
A:

    double Power(double base, int exponent) {
        double num = 1.0;
        if(exponent<0){
            base = 1/base;
            exponent = -exponent;
        }
        while (exponent) {
            if (exponent & 1) {
                num = base * num;
            }
            base *= base;
            exponent >>= 1;
        }
        return num;
    }

2.直接内部函数调用:

   double Power(double base, int exponent) {
        return pow(base, exponent);
    }

3.暴力法:

    double Power(double base, int exponent) {
        double num = 1.0;
        if(exponent<0){
            base = 1/base;
            exponent = -exponent;
        }
        while(exponent--)
            num = base * num;
        return num;
    }

4.递推法:

    double Power(double base, int exponent) {
        if(exponent == 0)
            return 1;
        if (exponent < 0) {
            base = 1 / base;
            exponent = -exponent;
        }
        return base * Power(base, exponent - 1);
    }

以上是关于剑指offer系列——12.数值的整数次方的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer对答如流系列 - 数值的整数次方

剑指offer 12. 数值的整数次方

剑指offer 12:数值的整数次方

剑指offer数值的整数次方

12剑指offer--数值的整数次方

剑指offer12数值的整数次方