VB.NET汉诺塔递归演示

VB.NET 写的汉诺塔算法演示程序,挺适合想搞清楚递归怎么回事的朋友。UI 倒没啥花头,主要靠命令行输出一步步地模拟盘子移动过程,逻辑清晰,看着也不费劲。

三柱子的设定,盘子大小排序,经典套路都在。重点是那个MoveTower函数,用递归的方式一层层拆解问题,还顺带配了个MoveDisk输出动作的函数,方便你跟着程序走一遍。

程序不长,但结构清楚,想学递归的话,从这段代码下手挺合适。代码长这样:

Module Module1
    Sub Main()
        MoveTower(3, "A", "B", "C")
        Console.ReadKey()
    End Sub

Private Sub MoveTower(ByVal n As Integer, ByVal source As Char, ByVal dest As Char, ByVal aux As Char) If n > 0 Then MoveTower(n - 1, source, aux, dest) MoveDisk(source, dest) MoveTower(n - 1, aux, dest, source) End If End Sub

Private Sub MoveDisk(ByVal from As Char, ByVal to As Char) Console.WriteLine("Move disk from " & from & " to " & to) End Sub End Module

注意哦,这里只输出了文字模拟。如果你想做成图形动画,也可以在MoveDisk里加点 UI 逻辑,比如用WinForms更新图形位置。

压缩包里还有个HanoiA.exe,你可以直接运行它看看效果。对入门 VB.NET 或者理解递归思维都蛮有。如果你更感兴趣非递归做法,也可以去看看汉诺塔非递归实现这篇文章,拓宽下思路。

如果你刚开始学 VB.NET,又对算法有点兴趣,这个小项目蛮适合拿来练手的。顺带一提,运行完看下输出顺序,自己在脑子里走一遍逻辑,会更有感觉。

zip 文件大小:9.49KB