题目描述:

  给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

  解题思路:

  本题看似比较简单,是一个简单的指数运算,但需要完整的考虑到所有情况。首先,对于底数,如果底数为0,则0的任何次方都是0,可以直接返回0。关键在于指数,指数可能有三种情况,有可能是正数、0、负数。对于指数是0的情况,任何数的0次方为1。对于指数是负数的情况,可以将其转化为绝对值计算,求出结果之后再求倒数。

  在计算n次方的时候,为了方便,我们根据减治的思想,通过同底数指数幂的公式计算,如下列公式。这里需要注意的是奇数和偶数的不同。

【剑指Offer】12、数值的整数次方

  这里为了简单,我们通过递归直接实现,因此也可以不求负数的绝对值,因为一个数每次除以2,最终只有可能是0,1或者-1,将其作为递归结束条件,可以直接写出以下简洁代码。

  编程实现(Java):

   public double Power(double base, int exponent) {
        //除2计算
        if(exponent==0)
            return 1.0;
        if(exponent==1)
            return base;
        if(exponent==-1)
            return 1.0/base;
        double half=Power(base,exponent/2); //一半
        return half*half*Power(base,exponent%2); //注意奇偶不同,奇数多乘一个base
    }

相关文章:

  • 2021-12-03
  • 2021-11-20
  • 2022-01-13
  • 2021-12-01
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-15
  • 2021-08-16
  • 2021-12-17
  • 2021-06-12
  • 2021-09-16
  • 2022-02-19
  • 2021-09-10
相关资源
相似解决方案