栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

分治算法:50. Pow(x, n)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分治算法:50. Pow(x, n)

题目描述:

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

解题思路:

乍一看就是一道简单的分治,x的n次方拆成x的n/2次方就可以了,但还是有些细节要注意。

class Solution {
public:
    double myPow(double x, int n) {
        if(n<0) return 1.0/help(x,-(long long)n);//需注意是否越界
        return help(x,n);
    }

    double help(double x, long long n){
        if(n==0) return 1;
        if(n==1) return x;
        double res = myPow(x, n/2);
        if(n%2) return res*res*x;
        return res*res;
    }
};

写的期间报了一个错:

Line 19: Char 34: runtime error: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself (solution.cpp) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:28:34

 处理负指数时,若直接取-n,当n= -2147483648,-n就越界了,所以先把n转为long long,辅助函数的参数也用long long 就可以了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号