有人可以告诉我为什么当n = 2时我继续得到4而当n = 3时我仍然得到11吗?我应该分别得到3和7,但是它没有发生并且非常令人沮丧。
move是类级别的静态int变量
public String solve(int n, String start, String middle, String end) {
if (n == 1) {
move++;
return Integer.toString(move);
}
solve(n - 1, start, end, middle);
move++;
return solve(n - 1, middle, start, end);
}
最佳答案
问题是move
是静态变量,由于您没有在每次调用前重置它,因此是下一次调用solve
方法时,您的move方法还没有处于初始阶段,即0
,因此您必须在之后重新初始化它。每次调用solve
方法。
您的代码非常好,在调用方法而不重置move变量时发生问题。
在这里检查:https://ideone.com/NoFJ8y
Success time: 0.05 memory: 4386816 signal:0
3 --> When called solve with n=2
Success time: 0.04 memory: 4386816 signal:0
7 --> When called solve with n=3
Success time: 0.04 memory: 4386816 signal:0
3 --> When called solve 3 times with n=2 then 3 then 4
10
25
关于java - 汉诺塔输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44193991/