【问题标题】:How does the function powRec(x,n-1) performs an exponentiation?函数 powRec(x,n-1) 如何进行幂运算?
【发布时间】:2018-07-18 10:47:20
【问题描述】:
class PowerRec
{
   static double powRec(double x, int power)
   {
      if (power == 1){
        return x;        
      }      
      return x * powRec(x, power - 1);
   }

  public static void main(String args[])
  {
    double x = 2;
    System.out.println (x + " to the fourth is " + powRec (x, 4));
  }    
}

【问题讨论】:

  • 它没有。不过x * (x ^ (n - 1)) == x ^ n
  • 做一些代码布局揭示了一条令人毛骨悚然的路线。修好了。

标签: java recursion exponentiation


【解决方案1】:

您的代码中有两个连续的返回语句。以及错误的 powRec 方法

 static double powRec(double x, int power) {
    if (power == 0) {

        return 1;


    }
    return x * powRec(x, power - 1);
}

【讨论】:

  • 是的,我犯了一个错误,但我还是不明白 'powRec(x, power-1) ' 是如何工作的?
  • 你使用递归方法调用。方法 powRec(x,4) 调用 powRec(x,3),然后 powRec(x,2)... 直到 power==0。你可以阅读en.wikipedia.org/wiki/Recursion_(computer_science)
【解决方案2】:
a³ = a * a ² = a * (a * a) 

这就是代码本质上的作用。

现在你的新作业:将 (x * y) 替换为对 mul (x, y) 的调用,并以相同的习惯解决乘法与加法的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2011-04-04
    • 2020-05-14
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    相关资源
    最近更新 更多