剑指Offer-11.数值的整数次方

    xiaoxiao2021-03-25  100

    题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。同时不需要考虑大数问题。 自以为简单的解法:

    double Power(double base, int exponent) { double result = 1.0; for(int i = 1; i < exponent; ++i) result *= base; return result; }

    思考:如果输入的指数是0和负整数,怎么办?上面的解决办法考虑了指数是正整数的情况。 正确解法:

    double Power(double base, int exponent) { int n = abs(exponent); if (n == 0) return 1.0; if (n == 1) return base; double res = Power(base, n >> 1); res *= res; if (n & 1 == 1) res *= base; return exponent < 0 ? 1 / res : res; }
    转载请注明原文地址: https://ju.6miu.com/read-21308.html

    最新回复(0)