2014-02-20 8 views
-1

Привет всем, я начал делать рекурсию, и я должен сказать, что это меня сбивает с толку. В настоящее время я работаю на башни Ханоя:Рекурсивная функция, возвращающая строку ходов

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

Вы пытались его распечатать? Когда я запускаю ваш код, я получаю '' '1- 1- 3 1-> 2 2-> 3''', который выглядит нормально. – NeplatnyUdaj

ответ

0

Попробуйте его с return add3 + add + add2;. Если вывод вашего кода проверяется на физической башне, он не работает.
Причина, по которой вы видите только «один цикл повторного вызова», заключается в том, что выходное шоу действительно для hanoi(3,1,3), а не 2,1,3.

+0

Я вижу, большое спасибо – jambuls

Смежные вопросы