我想学习递归,它的行为真的很奇怪。我有以下简单的方法来减少给定的值和总和偶数,直到值变为0.然而,一旦值= 0,它开始只访问递归调用(在IF-ELSE条件下)并开始增加我的价值回来,并再次添加,直到它回到初始值。我录制了2个截屏视频。例如,如果我在类中创建主方法并使用5执行方法,例如,我会接收输出6,这是正确的,但是在JUnit测试中,对于相同的值,它期望,但实际值为!我不确定我做错了什么。而且,一旦数值达到0,我是否返回正确的东西?我不知道如何返回和那里,但在同一时间有总和返回方法本身的输出..递归递减值然后意外递增
class EvenSums {
private static int sum = 0;
public static int sumEvenRec(int n) {
int input = n;
if(input <= 0) {
return 0;
} else {
if(input % 2 == 0) {
sum += input;
}
sumEvenRec(input-1);
}
return sum;
}
这里的调试截屏(注意输入的降低后升高值)并注意它是如何从回归和回归到以某种方式增加输入值的递归函数。 DEBUG SCREENCAST
在测试截屏可以看到:
对于输入2:java.lang.AssertionError: expected:<2> but was:<58>
对于输入5:java.lang.AssertionError: expected:<6> but was:<64>
对于输入6:java.lang.AssertionError: expected:<12> but was:<76>
Intrestingly,对于输入:作品!
TEST SCREENCAST
天哪,工作!谢谢!删除了静态并创建了一个对象。是!谢谢! – WannaBeForNow