首页 > 代码库 > 徒手写汉诺塔
徒手写汉诺塔
加班酱油看到园中略有汉诺塔的文章,不由得想起大学王吊老师给我们上的c语言课啊,其中有汉诺塔这一部分.隐隐记得一点点,但是下面代码肯定是徒手写出(这里和标题完全属于装B类型,突然想到徒手XXX,所以就把题目写得很装B.徒手撸一把,徒手斗歹徒,徒手泡妹妹.),突然感觉代码好短,可能是以前学校题目就差不多这些样子吧.不能太长了.
当然在写这个过程中还是有bug的.我去中间有一点改动,就是打印的地方.
namespace ConsoleApplication1{ class Program { static void Main(string[] args) { A a = new A(); a.Fun(‘a‘, ‘c‘, 3, ‘b‘); Console.ReadLine(); } } /// <summary> /// A,B,C 从A到C /// </summary> class A { //从a上把n盘子搬到c上,通过b来搬 public void Fun(char a, char c, int n, char b) { if (n == 1) { Console.WriteLine("从{0}上搬1个盘子到{1}上", a, c); } else if (n > 1) { Fun(a, b, n - 1, c); Fun(a, c, 1, ‘*‘); Fun(b, c, n - 1, a); } else return; } }}
总结
练手,防子大脑变瓜.这个递归思想还是很简单的,要把n个盘子从a移动到c上面,借住b来完成,那么就要完成把n-1个盘子从a移到b,通过c,然后把a上的最后一个称到c,再把b上的盘子移动到c上面通过a来完成.所以分下来就是主要的三句.而n==1的时候就是移动,所以打印出来即可.
徒手写汉诺塔
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。