当前位置: 代码迷 >> 综合 >> LeetCode(剑指offer-Recursion)-面试题16. 数值的整数次方
  详细解决方案

LeetCode(剑指offer-Recursion)-面试题16. 数值的整数次方

热度:77   发布时间:2023-12-14 00:10:55.0

实现函数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;}
};

在这里插入图片描述