有人可以告诉我为什么当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);
}
答案 0 :(得分:3)
问题是move
是静态变量,因为你没有在每次调用之前重置它,所以当你下次调用solve
方法时,你的移动方法不在初始阶段,即{{1因此,每次调用0
方法后都必须重新初始化它。
当您在不重置移动变量的情况下调用方法时,您的代码完全没问题。
点击此处:https://ideone.com/NoFJ8y
solve