河内产出塔

时间:2017-05-26 05:06:06

标签: java recursion towers-of-hanoi

有人可以告诉我为什么当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);
} 

1 个答案:

答案 0 :(得分:3)

问题是move是静态变量,因为你没有在每次调用之前重置它,所以当你下次调用solve方法时,你的移动方法不在初始阶段,即{{1因此,每次调用0方法后都必须重新初始化它。

当您在不重置移动变量的情况下调用方法时,您的代码完全没问题。

点击此处:https://ideone.com/NoFJ8y

solve