嘿大家我开始做递归,我不得不说让我感到困惑。 目前我正在为河内塔工作:
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
答案 0 :(得分:0)
使用return add3 + add + add2;
试用。如果在物理塔上尝试了代码的输出,则它不起作用
您只看到“重新调用一个循环”的原因是输出节目实际上是hanoi(3,1,3)
,而不是2,1,3
。