首页 > 代码库 > 递归(hanoid tower)
递归(hanoid tower)
问题:汉诺塔(港台:河内塔)是根据一个传说形成的数学问题: 有三根杆子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得到的值能及时返回到函数中吗?
递归(hanoid tower)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。