Tuesday, August 12, 2008

vb.net汉诺塔递归源码

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

No comments: