快速幂 Pow(x,n)


avatar
GuoYulong 2024-08-02 144

题目描述

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。

示例 1:

输入:x = 2.00000, n = 10
输出:1024.00000

示例 2:

输入:x = 2.10000, n = 3
输出:9.26100

个人C++解答


快速幂有两种方法,一种是分治思想,另一种是倍增法,我用的是分治的思路,将x的n次方化为x的n/2*n/2次方×x的n%2次方,下面给出代码;

GYL
class Solution {
public:
    double myPow(double x, int n) {
        if(n==0) return 1;
        if(n==1) return x;
        if(n==-1) return 1/x;

        double a = myPow(x,n/2);
        double b = myPow(x,n%2);
        return a*a*b;
    }
};

个人C++解答


这一部分是倍增法的代码,我没有去尝试理解,来自评论区FATSHEEP好友提供,灵神的题解也是用到的倍增法

GYL
double myPow(double x, int n) {
    double ans = 1;
    while(n != 0)
    {
        if(n & 1)
        {
            if(n < 0) ans *= 1/x;
            else ans *= x;
        }
        n /= 2;
        x *= x;
    }
    return ans;
}

相关阅读

注意!!!

新增会员中心页面,方便管理个人账户,充值功能暂不开启,请勿为本网站进行任何充值活动!!!

通知!!!

① 过年好!!!拖更几个月了已经,年后继续更新!!