如何使用变换和征服来简化此算法?

时间:2014-04-30 12:07:10

标签: java algorithm exponent divide-and-conquer exponentiation

我知道有三种方法可以使用变换和征服来简化问题。我正在尝试简化这个代码以提高效率。问题是,它已经在log n运行时。我想知道如何进一步简化这个解决方案?对于功率算法,它是Java中的递归分治方法,其中base = a和n =指数幂。所以基本上是x ^ n或A ^ n。我正在将它编译成codingbat,这就是为什么它的结构是它的原因(codingbat有一定的局限性)。有什么建议吗?

    public int powerN(int base, int n) {  
      if (n==1)
         return base;

      else if (n==2)
         return base*base;

      else if (n%2==0)
         return powerN(base*base, n/2);


      else if (n%2==1)
         return powerN(base, n-1)* base; 
      else
         return 1;   
    }

0 个答案:

没有答案