gpt4 book ai didi

java - 尝试使用我自己的程序来理解 Hanoi 算法

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

<分区>

我有以下汉诺塔的工作程序,我们将从 A--B 塔移动磁盘,C 是额外的塔。我将函数的初始状态定义如下:moveDisks(n, ' A', 'B', 'C');

我将使用以下算法在每次移动时打印:

public static void moveDisks(
int n,
char fromTower,
char toTower,
char auxTower)
{
if (n == 1) // Stopping condition
System.out.println(
"Move disk " + n + " from " + fromTower + " to " + toTower);
else
{
moveDisks(n - 1, fromTower, auxTower, toTower);
System.out.println(
"Move disk " + n + " from " + fromTower + " to " + toTower);
moveDisks(n - 1, auxTower, toTower, fromTower);
}
}
}

从我程序中的递归调用可以看出,我有三种可能的调用:

    A--B--C //fromTower, toTower,auxTower
A--C--B //fromTower, auxTower, toTower
C--B--A //auxTower, toTower, fromTower

但是,我得到了 3 磁盘的以下打印输出:

The moves are:
Move disk 1 from A to B
Move disk 2 from A to C
Move disk 1 from B to C
Move disk 3 from A to B
Move disk 1 from C to A
Move disk 2 from C to B
Move disk 1 from A to B

我知道我的程序是正确的,但我并没有真正理解它是如何调用 B--CC--A 的,因为我从来没有做过这样的函数/方法。如果您能使用我的 A--B--CfromTower、toTower、auxTower 模型展示此递归方法如何在三个磁盘方面工作,我将不胜感激.

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