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,又对算法有点兴趣,这个小项目蛮适合拿来练手的。顺带一提,运行完看下输出顺序,自己在脑子里走一遍逻辑,会更有感觉。
评论区