引号下面是我的实际作业,而下面是我当前的代码。有人可以指出我正确的方向。
编写一个称为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