나는이 하노이 타워의 재귀 알고리즘을 이해하는 문제가 오전 :하노이 타워의 재귀 알고리즘
public class MainClass {
public static void main(String[] args) {
int nDisks = 3;
doTowers(nDisks, 'A', 'B', 'C');
}
public static void doTowers(int topN, char from, char inter, char to) {
if (topN == 1){
System.out.println("Disk 1 from " + from + " to " + to);
}else {
doTowers(topN - 1, from, to, inter);
System.out.println("Disk " + topN + " from " + from + " to " + to);
doTowers(topN - 1, inter, from, to);
}
}
}
출력은 다음과 같습니다
Disk 1 from A to C
Disk 2 from A to B
Disk 1 from C to B
Disk 3 from A to C
Disk 1 from B to A
Disk 2 from B to C
Disk 1 from A to C
나는 우리가 어떻게해야합니까 방법을 이해하지 않습니다
를Disk 1 from C to B
Disk 3 from A to C
Disk 1 from B to A
누군가 설명해 주시겠습니까?
감사합니다.
여기의 핵심 개념은 인수를 변경하는 재귀 호출을 이해하는 것입니다. – gtgaxiola
예,하지만 A에서 B로 A에서 C 디스크 2로 디스크 1이 어떻게 왔는지는 이해하지만 어떻게 든 이해할 수 없습니다. 디스크 1이 C에서 B로 바뀌 었습니다. 그 흐름을 설명해 주시겠습니까? 나는 정말로 그것을 바르게 평가할 것이다! – user564927
'doTowers (nDisks,'A ','B ','C ');를 doTowers (nDisks,'Left ','Right ','Middle ')로 변경하고 시각화하는 데 도움이되는지 확인하십시오. – Shmiddty