实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [?231, 231 ? 1] 。
链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof
解题思路:
class Solution {
public:double myPow(double x, int n) {
long num = n;if (x == 0) {
return 1;}// 当n为负数时:x^-n = (1/x)^nif (n < 0) {
num = -num;x = 1/x;}double result = 1.0;while(num){
if (num&1){
// n对2取余为1result *= x;}// 从x^2 先开始做二分累乘(反向向上增大)x *= x;// n进行整除num >>= 1;}return result;}
};