0
public class FindSum
{
private static int sum(int n)
{
if (n==1)
return 1;
else
return n + sum (n-1);
}
public static int getSum(int n)
{
if (n>0)
return sum(n);
else
{
throw new IllegalArgumentException
("Error: n must be positive");
}
}
}

根据我的书,这会在执行前测试 n>0。我不明白如果测试“if (n>0)”出现在算法之后,为什么会出现这种情况。为了完成这个测试,不应该翻转这两种方法吗?

4

2 回答 2

0

在 Java 中,方法在类中的顺序无关紧要。请注意 getSum() 正在调用 sum()。

那么考虑一下如果我们调用 getSum(0) 会发生什么?if 条件将失败并且什么都不会发生,我们将直接进入错误。如果我们调用 getSum(5) 会怎样?然后我们将返回 sum(5)。但是 sum(5) 是什么?现在我们发现自己处于 sum() 方法中,我们在其中执行递归操作,直到达到基本情况,最终将返回 1 + 14。

于 2013-04-05T00:19:52.790 回答
0

它们的写入顺序无关紧要,但执行顺序至关重要。

由于如果检查成功则getSum显式调用,因此只要您调用.sumgetSum

于 2013-04-05T00:16:00.383 回答