汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,

在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。

并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

汉诺塔的递归实现算法,将A中的圆盘借助B圆盘完全移动到C圆盘上,
每次只能移动一个圆盘,并且每次移动时大盘不能放在小盘上面
递归函数的伪算法为如下:
if(n == 1)
   直接将A柱子上的圆盘从A移动到C
else
   先将A柱子上的n-1个圆盘借助C柱子移动到B柱子上
   直接将A柱子上的第n个圆盘移动到C柱子上
   最后将B柱子上的n-1个圆盘借助A柱子移动到C柱子上
 
该递归算法的时间复杂度为O(2的n次方),当有n个圆盘时,需要移动圆盘2的n次方-1次
 

操作系统:ubuntu
编译软件:gcc
结果截图:
 

 
 

我选择了64个,运行了2分钟还不到第10个。。。。。。。。。。。。。。。。。

5 个的话,不到一眨眼的时间

 #include <stdio.h>

 //将n个圆盘从x柱子上借助y柱子移动到z柱子上
void move(int n, char x, char y, char z)
{
if(n == )
printf("圆盘编号 %d :从 %c 移动到 %c\n",n,x,z);
else
{
move(n-,x,y,z);
printf("圆盘编号 %d:从 %c 移动到 %c\n",n,x,z);
move(n-,y,x,z);
} } int main()
{
//A,B,C分别代表三个柱子
char ch1 = 'A';
char ch2 = 'B';
char ch3 = 'C'; int n; //n代表圆盘的个数
printf("请输入圆盘的个数:");
scanf("%d",&n);
move(n,ch1,ch2,ch3); return ; }

关于这个运行时间,,我也是醉了。。。。。。。。。。。。。。。。。。。。。。。。。。

汉诺塔(河内塔)算法 ----C语言递归实现的更多相关文章

  1. C语言之算法初步(汉诺塔--递归算法)

    个人觉得汉诺塔这个递归算法比电子老鼠的难了一些,不过一旦理解了也还是可以的,其实网上也有很多代码,可以直接参考.记得大一开始时就做过汉诺塔的习题,但是那时代码写得很长很长,也是不理解递归的结果.现在想 ...

  2. JavaScript算法实现之汉诺塔(Hanoi)

    目前前端新手,看到的不喜勿喷,还望大神指教. 随着Node.js,Angular.js,JQuery的流行,点燃了我学习JavaScript的热情!以后打算每天早上跟晚上抽2小时左右时间将经典的算法都 ...

  3. 【C语言】汉诺塔问题

    之前遇见这个问题,非常费劲地理解了,并写出代码,然后过段时间,再遇见这个问题,又卡住了,如此反反复复两三次,才发现自己对递归的理解依然很肤浅.今天无聊,重温<算法:c语言实现>一书,又遇见 ...

  4. 汉诺塔算法的递归与非递归的C以及C++源代码

    汉诺塔(又称河内塔)问题其实是印度的一个古老的传说. 开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一 个小, ...

  5. Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法-un

    ylbtech-Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法 1.返回顶部 1. Java 实例 - 汉诺塔算法  Java 实例 汉诺塔(又称河内塔)问题是源 ...

  6. java实现汉诺塔算法

    package com.ywx.count; import java.util.Scanner; /** * @author Vashon * date:20150410 * * 题目:汉诺塔算法(本 ...

  7. 算法:汉诺塔问题(Tower of Brahma puzzle)

    一.算法背景 最早发明这个问题的人是法国数学家爱德华·卢卡斯.传说越南河内某间寺院有三根银棒(A, B, C),上串 64 个金盘. 寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子:预言说当这 ...

  8. 汉诺塔算法详解之C++

    汉诺塔: 有三根杆子A,B,C.A杆上有N个(N>1)穿孔圆环,盘的尺寸由下到上依次变小.要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘: 大盘不能叠在小盘上面. 提示:可将圆盘临时置 ...

  9. Java汉诺塔算法

    汉诺塔问题[又称河内塔]是印度的一个古老的传说. 据传开天辟地之神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把 ...

随机推荐

  1. vim的使用

    vim的定位 home:光标移到行首 end:光标移到行尾 pageup:屏幕上翻页 pagedow:屏幕下翻页 shift+g:定位行  如转至10行   10shift+g shift+gg 转至 ...

  2. bs4_2

     QQ:231469242 欢迎交流 Parsing HTML with the BeautifulSoup Module Beautiful Soup是用于提取HTML网页信息的模板,Beautif ...

  3. CentOS7安装Nginx并部署

    服务器IP是192.168.36.136 1.直接yum install nginx即可 2.主配置文件是/etc/nginx/下的nginx.conf,另外一个是/etc/nginx/conf.d/ ...

  4. 初识Hadoop一,配置及启动服务

    一.Hadoop简介: Hadoop是由Apache基金会所开发的分布式系统基础架构,实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS:Hadoo ...

  5. Java代码块

    代码块分为普通代码块.构造块.静态代码块.同步代码块4种 普通代码块 普通代码块是指直接在方法或者是语句中定义的代码块 构造块 构造块是直接写在类中的代码块 构造块优先于构造方法执行,而且每次实例化对 ...

  6. Python 调用 user32.dll

    import ctypes h = ctypes.windll.LoadLibrary("C:\\Windows\\System32\\user32.dll") h.Message ...

  7. Spot光照资料

    http://forums.autodesk.com/t5/FBX-SDK/EmissiveFactor-AmbientFactor-DiffuseFactor/td-p/4230572http:// ...

  8. python抓取网站URL小工具

    1.安装Python requests模块(通过pip): 环境搭建好了! 2.测试一下抓取URL的过程: 抓取出来的URL有JavaScript代码,正则上还有待更加完善,有兴趣的可以研究下~! 工 ...

  9. xss利用和检测平台

    xssing 是安全研究者Yaseng发起的一个基于 php+mysql的 网站 xss 利用与检测开源项目,可以对你的产品进行黑盒xss安全测试,可以兼容获取各种浏览器客户端的网站url,cooki ...

  10. [C#]集合已修改;可能无法执行枚举操作

    摘要 我相信很多人对这个再熟悉不过了.对已经修改的集合进行操作就会出现这个错. 解决办法 比如有下面的一段代码,我们创建一个集合,并向集合中添加10个数,然后,我们循环再将这些数移除了. static ...