引号下面是我的实际作业,而下面是我当前的代码。有人可以指出我正确的方向。


  编写一个称为multipleEvens的递归方法,该方法返回前n个乘积
  甚至是整数。例如,multipliEvens(1)返回2,multipleEvens(4)返回384
  (因为2 * 4 * 6 * 8 = 384)。如果传递的值小于1,则引发IllegalArgumentException。


  private static int multiplyEvens(int n)
  {
      if(n%2 == 0)
      {
          System.out.println(n*n);
          return multiplyEvens(n*n);
                      // I'm lost
      }
      System.out.println();
      return n;
  }

最佳答案

干得好:

public static void main(String[] args) {
    System.out.println(multiplyEvens(4));
}

private static int multiplyEvens(int n) {
    if(n < 1) throw new IllegalArgumentException("Value less than 1 not supported");
    else if(n == 1) return 2;
    else return multiplyEvens(n-1) * (n*2);
}


这里是递归算法的基础。您必须假设您已计算出n-1的结果。然后返回调整为n的n-1的结果。 (也就是说,您将第n个偶数乘以n * 2)。递归方法调用执行其余操作,依次假定它已经计算出n-2的值,依此类推...直到n == 0,结果为1

08-19 22:11