gpt4 book ai didi

java - 汉诺塔递归算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:52 25 4
gpt4 key购买 nike

我在理解这个汉诺塔递归算法时遇到问题:

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

有人可以解释一下吗?

谢谢。

最佳答案

将 N-1 个(除最后一个以外的所有圆盘)塔从 A 移动到 B,然后将第 N 个圆盘从 A 移动到 C,最后移动塔,即可将 N 个圆盘塔从挂钉 A 移动到 C之前移动到 B,从 B 到 C。任何时候移动具有多个磁盘的塔时都应应用此方法,在 1 磁盘塔的情况下,您只需移动其唯一的磁盘。

关于java - 汉诺塔递归算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com