汉诺塔Hanoi

汉诺塔算法解析
算法思路:
  1.如果只有一个金片,则把该金片从源移动到目标棒,结束。
  2.如果有n个金片,则把前n-1个金片移动到辅助的棒,然后把自己移动到目标棒,最后再把前n-1个移动到目标棒.
  3.单纯对于有N个金片要挪动的步数求出, 可以使用递推方法,满足递推方程f(i) = f(i - 1) * 2 + 1.
  1. class hanoi
  2.     {
  3.         private int i = 0;
  4.         public int I
  5.         {
  6.             get { return i; }
  7.             set { this.i = value; }
  8.         }
  9.         //---------核心到代码----------
  10.         internal void HanoiMove(int n, char a, char b, char c)
  11.         {
  12.             if (n == 1)
  13.             {
  14.                 i++;
  15.                 Move(n, a, c);
  16.                 //Console.WriteLine("第{0}个:{1}-------->{2}", n, a, c);
  17.             }
  18.             else
  19.             {
  20.                 HanoiMove(n - 1, a, c, b);
  21.                 i++;
  22.                 Move(n, a, c);
  23.                 //Console.WriteLine("第{0}个:{1}--------------->{2}", n, a, c);
  24.                 HanoiMove(n - 1, b, a, c);
  25.             }
  26.         }
  27.         private void Move(int n, char a, char c)
  28.         {
  29.             Console.WriteLine("第{0}个:{1}-------->{2}", n, a, c);
  30.         }
  31.     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值