使用函数的递归调用来解决Hanoi(汉诺)塔问题。
2013-09-25 11:40
411 查看
#include<stdio.h> void hanoi(int n, char x, char y, char z); void move(char x, char y); int times = 0; //表示移动圆盘的次数 void main() { setvbuf(stdout, NULL, _IONBF, 0); //使用eclipse开发环境时必须包含这个语句。不允许printf()函数输出到缓冲区,而是直接输出。 int m; printf("input the number of disks:"); scanf("%d", &m); printf("The step to moving %d diskes from A to C:\n", m); hanoi(m, 'A', 'B', 'C'); //将m个圆盘从A塔移动到C塔。 } /* * 将n个圆盘从x塔移动到z塔,y塔作为辅助塔 */ void hanoi(int n, char x, char y, char z) { if (n == 1) move(x, z); else { hanoi(n - 1, x, z, y); move(x, z); hanoi(n - 1, y, x, z); } } void move(char x, char y) { printf("%d:\t%c-->%c\n",++times, x, y); }
相关文章推荐
- 用C语言解决(hanoi)汉诺塔问题——函数的递归调用
- QSlider 拖动滑动条使用valueChanged(int value)信号重复调用槽函数问题解决
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程
- 使用第三方库的解决windows下Apache+PHP调用SSL函数假死问题
- 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为(转)
- <C语言>用递归调用函数解决穷举n位二进制数问题
- Ubuntu下使用make编译c文件,不能调用sin cos 等函数问题的解决
- QSlider 拖动滑动条使用valueChanged(int value)信号重复调用槽函数问题解决
- 递归、函数的调用机制及汉诺塔问题
- 使用Java HttpComponent/HttpClinet 调用 WebAPI问题的解决
- PHP经验——usort使用函数中调用引用函数的出错问题
- 解决visual studio里面的scanf函数无法使用的问题
- 在CCS中使用printf函数输出的问题和解决过程
- 使用递归解决一种约瑟夫问题
- 有关ViewPager的使用及解决Android下ViewPager和PagerAdapter中调用notifyDataSetChanged失效的问题
- 使用dwr同步调用导致无法获取js方法的返回结果问题的解决办法
- 巧妙解决问题:&CMFCcodeDlg::RunCommands”创建指向成员的指针。MFC多线程调用要求调用的接口必须是全局函数或静态成员函数
- for循环的使用 反转字符串,手写strrev()函数 解决问题
- php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
- multiprocess模块使用进程池调用apply_async()提交的函数及回调函数不执行问题