递归函数返回一串移动

时间:2014-02-20 17:37:51

标签: java string recursion

嘿大家我开始做递归,我不得不说让我感到困惑。 目前我正在为河内塔工作:

public static String hanoi(int n, int startPole, int endPole) {
    String ret = new String();
    if (n == 0){
      return ""; 
    }

    int intermediatePole = 6 - startPole - endPole;

    String add3 = hanoi(n-1, startPole, intermediatePole);
    String add = startPole + "->" + endPole + "\n";

    String add2 = hanoi(n-1, intermediatePole,endPole );

    return add + add3 + add2;
}

所以几乎让我的大脑破碎的是 - 谁回复了一串动作,以便你从hanoi(2, 1, 3)的调用中获得,你得到一个这样的输出,我只返回递归调用的一个循环

1 - 3
1 - 2 
3 - 2 
1 - 3 
2 - 1 
2 - 3
1 - 3

1 个答案:

答案 0 :(得分:0)

使用return add3 + add + add2;试用。如果在物理塔上尝试了代码的输出,则它不起作用 您只看到“重新调用一个循环”的原因是输出节目实际上是hanoi(3,1,3),而不是2,1,3