问题:汉诺塔(港台:河内塔)是根据一个传说形成的数学问题: 有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。 问:如何移?最少要移动多少次? 解答:(C#) namespace hanoi_tower { class Program { static void Main(string[] args) { Console.WriteLine("Please insert a positive integer:"); string a = Console.ReadLine(); int n = Convert.ToInt32(a); int count = 0; Program step = new Program(); count = step.hanoi(‘A‘, ‘B‘, ‘C‘, n, count); Console.WriteLine(count); Console.ReadKey(); } public int hanoi(char a,char b,char c,int n,int count){ if (n == 1) { Console.WriteLine("Move disk {0} from {1} to {2}.", n, a, c); return 1; } else { count=hanoi(a, c, b, n - 1,count); Console.WriteLine("Move disk {0} from {1} to {2}",n,a,c); count+=1; count += hanoi(b, a, c, n - 1,count); } return count; } } } 需要注意的有:1.Readline()返回值类型为string,需要转化为需要的type。 方法: string str=Console.ReadLine();//读入一行 int a = Convert.ToInt32(str);//第一种转换方式 int b = int.Parse(str);//第二种转换方式 int c; int.TryParse(str, out c);//第三种转换方式 2.建立类的实例来引用method。 3.递归的初始化。 4.疑问:count得到的值能及时返回到函数中吗?
时间: 2024-10-17 16:03:00