这里是第一类有人可以解释这个代码
公共类Number {
private static int Result;
public Number(int X){
if(X == 0){ return; }
Result += X;
Number another_number = new Number(X-1);
}
public static void Clear(){
Result = 0;
}
public static int getResult(){
return Result;
}
}
这里是第二类 公共静态无效的主要(字串[] args){
Number.Clear();
Number x = new Number(5);
System.out.println("The result is " + Number.getResult());
Number y = new Number(5);
System.out.println("The result is " + Number.getResult());
Number.Clear();
Number z = new Number(5);
System.out.println("The result is " + Number.getResult());
}
起初我以为答案是:
The result is 9. (Because 10-1 is 9)
The result is 13. (Because 9+5 -1 is 13)
The result is 4. (Because 5-1 is 4).
但实际上答案是:
The result is 55
The result is 70
The result is 15
这难倒我。我知道我错过了一些大概念,但我无法弄清楚。我已经和另外3个人交谈过,他们也很难过。如果有人能帮助我们,那会很棒。
您应该逐个调试器中的代码,看看实际发生了什么。 –
您确定此代码生成55,70,15吗?我预计它会产生15,30,15。你是否复制/粘贴错误的东西?无论哪种方式,你对“10-1是9”等事物的推理完全不相干。代码无处不在。代码*正在做的是递归计数并将每个结果添加到静态总数中。然后打印总计。 5 + 4 + 3 + 2 + 1是15.(当然,15 + 5 + 4 + 3 + 2 + 1是30.) – David
我期望它产生15,15和15.注意重置每次通话之间的静态 – tddmonkey