【Leetcode】算法题50 Pow(x,n)

题目:

50. Pow(x, n)

Implement pow(xn).


题目描述:实现x的n次方



一开始用蛮力法计算,提交代码以后系统判断计算超时,所以采用分治的思想,先计算x的n/2次方,再将结果求平方即可,调试过程中主要问题就是精度问题,当x为分数、且n较大时,结果可能为0,在求解问题中可能出现0做分分母的情况,如果改为乘法 则可以解决这个问题(以下代码并未修改)

贴代码:

double myPow(double x, int n) {
   int index = n;
    double result = 1;
    double sqr;
    if (x == 0)
        return x;
    if (n == 1)
        return x;
    if (n == 0)
        return 1;
    if(n < 0)
        index = -n;
    if (index % 2 == 0) {
        // index is even
        sqr = myPow(x, index / 2);
        result = sqr * sqr;
    }
    else {
        // index is odd
        sqr = myPow(x, (index + 1) / 2);
        if (x == 0)
            return 1;
        result = sqr * sqr / x;
    }
    if (result == 0)
        return 0;
    if (n < 0) {
        result = 1 / result;
    }
    return result;
}

leetcode时间排名:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值