首页 > 其他 > 详细

剑指 Offer 16. 数值的整数次方

时间:2021-04-13 10:06:22      阅读:29      评论:0      收藏:0      [点我收藏+]

剑指 Offer 16. 数值的整数次方

实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。

示例 1:

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

示例 2:

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

示例 3:

输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

思路

golang

采用快速幂运算 如果指数n为负数,则最后结果去倒数即可

func myPow(x float64, n int) float64 {
    var result float64 = 1

    num := int(math.Abs(float64(n))) //取绝对值
    for num > 0 { //快速幂运算
       if num&1==1{
           result = result * x
       }
       x = x *x
       num >>= 1
    }

    if n >=0 {
        return result
    }
    return 1/result
}

js

/**
 * @param {number} x
 * @param {number} n
 * @return {number}
 */
 var myPow = function(x, n) {
    let result = 1.0;
    let num = Math.abs(n);
    while(num>0){
        if(num&1==1) result = result * x;
        x = x*x;
        num >>>=1; //采用无符号右移
    }
    if(n>=0) return result;
    return 1/result;
};

剑指 Offer 16. 数值的整数次方

原文:https://www.cnblogs.com/zmk-c/p/14651589.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!