【20】数值的整数次方

2021/7/28 23:05:56

本文主要是介绍【20】数值的整数次方,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实现 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

我的思路:如果n 为负数,则求 1/x的n次方,如果n为整数,则求x的n次方。
但是最后几个测试用例过不了,求大佬优化!!!

在这里插入图片描述

大佬思路: 快速幂
引用K神讲解
在这里插入图片描述

class Solution {
    public double myPow(double x, int n) {
       if(x == 0) return 0;//等于0就直接返回
       long b = n;//用long型存储n,防止n为-2^31时,-n会越界
       double res = 1.0;//将res初始值设为1,避免n为奇数数,多出一项,可以将1当做x^0,且当x=0时,可以直接返回res;
       //如果 n为负数,则要把负数转变为正数计算
       if( b < 0){
           x = 1 / x;
           b = -b ;
       }
       while( b > 0){
           if((b & 1) == 1)  res *= x; //如果b的二进制某位为1,说明需要把这个项乘起来,比如:11的二进制为1011,
           x *= x;// x是每一轮循环都需要乘的。
           b = b >> 1; //求 b 的下一位二进制数,知道 b = 0。
       }
       return res;
    }
}


这篇关于【20】数值的整数次方的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程