Я недавно изучаю структуры данных и алгоритм. Я получил просто рабочий код Ханойских башен.
package linkedlist;
public class TowrerOfHanoi {
public static void main(String[] args) {
TowrerOfHanoi toh=new TowrerOfHanoi();
toh.move(3,'A','C', 'B');
}
public void move(int numberOfDisc,char from,char to,char inter) {
System.out.println(numberOfDisc);
if(numberOfDisc==1) {
System.out.println("Moving disc 1 from"+from
+"to"+to);
}
else {
move(numberOfDisc-1,from,inter,to);
System.out.println("Moving disc "+numberOfDisc+"from"+from
+"to"+to); //confusion at this point
move(numberOfDisc-1,inter,to,from);
}
}
}
Нет диска = 3 Вызвана функция перемещения и
At first step: move(3,A,C,B) is passed and it goes to else block.
2nd step:Recursion is seen and move(2,A,B,C) is called.
3rd step:Recursion is seen and move(1,A,B,C) is called.
Так как noofdisc = 1 так, это идет первым, если блок, и я получил это:
3
2
1
Moving disc 1 fromAtoC
Я ясно до этого момента и после этого я во время отладки я вижу noofdisk = 2 в консоли :
Поскольку наша последняя вызванная рекурсия была move (1, A, B, C) как Ноофдиск = 2? Я застреваю на этом этапе. Пожалуйста, помогите мне узнать, как я получаю noofdisk = 2 на этом этапе? Код работает нормально для Ханойских башен.