vb.net汉诺塔递归源码
-------------------------------------
Private Function Hanoi(ByVal n As Integer, ByVal x As Char, ByVal y As Char, ByVal z As Char)
If n = 1 Then
'编号为1的盘子从x到z
MoveDisc(x, 1, z)
Else
'n-1个盘子从x经z到y,
Hanoi(n - 1, x, z, y)
'编号为n的盘子从x到z
MoveDisc(x, n, z)
'n-1个盘子从y经x到z,
Hanoi(n - 1, y, x, z)
End If
End Function
Private Function MoveDisc(ByVal x As Char, ByVal n As Integer, ByVal z As Char)
i = i + 1
Me.RichTextBox1.AppendText(i & ":Move disc " & n & " from " & x & " to " & z & vbCrLf)
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Num As Integer
Dim x As Char = "x"
Dim y As Char = "y"
Dim z As Char = "z"
Me.RichTextBox1.Clear()
i = 0
Try
Num = CType(TextBox1.Text, Integer)
Hanoi(Num, x, y, z)
Catch ex As Exception
MsgBox("Error,please input a right number!", MsgBoxStyle.Information, "warn")
End Try
End Sub
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment