有人能告诉我为什么当 n=2 时我总是得到 4,而当 n=3 时我总是得到 11 吗?我应该分别得到 3 和 7,但它没有发生并且非常令人沮丧。
move 是类级别的静态整型变量
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
方法后重新初始化它。
您的代码完全没问题,但当您在不重置移动变量的情况下调用您的方法时就会出现问题。
在这里查看: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/