第十二周项目3-用递归的方法求解(汉诺塔)
2014-11-16 11:22
246 查看
/* *Copyright(c)2014,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:满星辰 *完成日期:2014年 11月 16日 *版本号:v1.0 * *问题描述:在一根柱子上从下往上按照大小顺序摞着N片圆盘。 把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。 并且规定,在小圆盘上不能放大圆盘, 在三根柱子之间一次只能移动一个圆盘。 令N=4 *程序输入:无 *程序输出:汉诺塔移动顺序 */ #include <iostream> using namespace std; void move(int n, char A, char B,char C);//盘子数由序号数增大而依次增大 int main() { move(4,'A','B','C'); return 0; } //有n个盘子, void move(int n, char A, char B,char C) { if(n==1) { cout<<n<<"号盘子"<<A<<" to "<<C<<endl; } else { move(n-1,'A','C','B'); cout<<n<<"号盘子"<<A<<" to "<<C<<endl; move(n-1,'B','A','C'); } }
运行结果:
学习心得:
我总觉得好像哪里不对。。。。
第N个盘子应该最先到C
则第N-1个盘子应该到B
那么把C当作中间量,使N-1个盘子从A-B
以此类推
相关文章推荐
- 第十二周项目三 用递归方法求解(汉诺塔)
- 第十二周 项目三-用递归方法求解-(6)汉诺塔
- 第十二周项目 3 用递归方法求解(汉诺塔)
- 第十二周项目3-用递归方法求解6 汉诺塔
- 第十二周项目3-用递归方法求解(一)
- 第十二周项目-用递归方法求解-求出n的阶乘
- 第十二周 项目三:用递归方法求解1*3*...*n的递归式
- 第十二周项目 3 用递归方法求解(二进制形式)
- 第十二周项目三--递归方法求解
- 第十二周项目三 用递归方法求解(输出对应的二进制形式)
- 第十二周项目3-用递归方法求解(2)求1*3*...*n的递归式
- 第十二周项目3-用递归方法求解(一)
- 第十二周项目3-用递归的方法求解(求1*3*...*n)
- 第十二周项目 2 用递归方法求解(1)——求出n的阶乘
- 第十二周项目 3 用递归方法求解(输出Fibnacci序列的第20个数)
- 第十二周项目三 用递归方法求解(返回第n个Fibnacci数)
- 第十二周项目三(1)——用递归方法求解
- 第十二周项目3-用递归的方法求解(最大公约数)
- 第十二周 项目三:用递归方法解决汉诺塔问题
- 第十二周项目3-用递归的方法求解(求n!)