C#汉诺塔问题递归法
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

------------------------------------------------------------------------------------------------------------------------------------------------
C#代码如下:
using System; namespace Hanoi { class Program { static void Main(string[] args) { int n; Console.WriteLine("请输入汉诺塔的层数:"); n = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("移动步骤如下:"); Move(n, 'x','y', 'z'); } /// <summary> /// 将n个盘子从x借助y移动到z /// </summary> /// <param name="n">有n个盘子</param> /// <param name="x">X柱</param> /// <param name="y">Y柱</param> /// <param name="z">Z柱</param> static void Move(int n, char x, char y, char z) { if (n == 1) { Console.WriteLine($"{x}-->{z}\n"); } else { Move(n - 1, x, z, y);//将n-1个盘子从x借助z移动到y Console.WriteLine($"{x}-->{z}\n");//将第n个盘子从x移动到z上 Move(n - 1, y, x, z);//将n-1个盘子从y借助x移动到z } } } }
浙公网安备 33010602011771号