【发布时间】:2015-07-13 00:31:17
【问题描述】:
问题 1
编写一个递归函数,返回 1 和 n 之间的偶数的乘积。
public static void main(String[] args) {
for (int n=0; n<10; n++)
{
System.out.println("f("+n+") = "+fact(n));
}
}
public static int fact(int number)
{
if(number==2)
return 1;
else
{
if(number%2==0)
return number*fact(number-1);
else
{
return fact(number-1);
}
}
}
不确定我在哪里做错了。请帮忙..谢谢。
【问题讨论】:
-
如果您的代码有问题,请解释到底发生了什么。你得到一个编译器错误吗?还是一个例外?结果错了吗?
-
这个问题不是在描述一个事实,而是一个不同的问题。您的代码看起来更像是分解。您只需 return number*fact(number-2); number==2 的起始值是 2 而不是 1。然后,您需要决定是否要接受奇数并调整循环。