家庭作业再次请求帮助.递归地乘以Evens?

Dav*_*vid 1 java math recursion

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

编写一个名为multiplyEvens的递归方法,它返回前n个偶数整数的乘积.例如,multiplyEvens(1)返回2,multiplyEvens(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; 
  }
Run Code Online (Sandbox Code Playgroud)

Jas*_*n S 5

尝试在递归的N-1而不是N*N,看看你能弄清楚的价值如何multiplyEvens(n)涉及到multiplyEvens(n-1).也许这会给你一个正确方向的开始.


Joh*_*136 5

在纸上走过去.

从n = 1开始

1%2 = 1 so you don't do into your loop, and return value = 1 (wrong)
Run Code Online (Sandbox Code Playgroud)

试试n = 2

2%2 = 0, so you go into your loop and call multiplyEvens(2*2)
4%2 = 0, so you go into your loop and call multiplyEvens(4*4)
16%2 = 0 ...
Run Code Online (Sandbox Code Playgroud)

到现在为止,你应该开始弄清楚你的方法至少有一个问题......