第十二周项目三用递归方法求解(6)
来源:互联网 发布:陕西水利预算软件 编辑:程序博客网 时间:2024/05/18 09:05
问题及代码:
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:郝俊宇 * 完成日期:2014年 11 月 17 日 * 版 本 号:v1.0 * * 问题描述:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,下面左图给出了移动方法的提示。请编制递归函数输出盘子数为4时(程序调试后,试试15个、20个,直至64个,看看会如何),移动的方案。图为盘子数为3时的输出供参考。 * 输入描述:一个数 * 程序输出: 对应的值 */ #include <iostream>using namespace std;int move(int n,char A,char B,char C);int main( ){ int n; cout<<"输入盘子的个数:"; cin>>n; move( n,'A','B','C'); cout<<endl; return 0;}int move(int n,char A,char B,char C){ if(n==1) { cout<<A<<"-->"<<C<<endl; } else { move(n-1,A,C,B); cout<<A<<"-->"<<C<<endl; move(n-1,B,A,C); }}
运行结果:
(1)3个盘子
(2)4个盘子
(3)5个盘子
知识点总结:
递归函数的应用
学习心得:
刚看到这道题感觉好难,我想了好长时间,之后参考了同学和老师的博文,但是还是没看懂,我又百度了一下,看明白了,但是还是不明白为什么A--B要写成A--C--B.
0 0
- 第十二周项目三用递归方法求解(6)
- 第十二周 项目三--用递归方法求解(1)
- 第十二周项目三 用递归方法求解(汉诺塔)
- 第十二周项目三用递归方法求解(1)
- 第十二周项目三用递归方法求解(2)
- 第十二周项目三用递归方法求解(3)
- 第十二周项目三用递归方法求解(4)
- 第十二周项目三用递归方法求解(5)
- 第十二周项目三--递归方法求解
- 第十二周 项目三-用递归方法求解-(6)汉诺塔
- 第十二周项目三 递归方法求解(5)二进制
- 第十二周项目三(1)——用递归方法求解
- 第十二周项目三 用递归方法求解(n的阶乘)
- 第十二周项目三 用递归方法求解(求1*3*5…*n)
- 第十二周项目三 用递归方法求解(求出两个数的最大公约数)
- 第十二周项目三 用递归方法求解(返回第n个Fibnacci数)
- 第十二周项目三 用递归方法求解(输出对应的二进制形式)
- 第十二周项目三——用递归方法求解(1)
- 在Cocos2d-x中使用SQLite数据库
- 稀疏矩阵-三元组
- 设置圆形按钮
- jeewx 微信管家 - 举办商业版本免费试用活动
- (高质量代码专栏)第二章-2
- 第十二周项目三用递归方法求解(6)
- jtt809加密算法
- MySQL
- Cannot generate SSPI context.
- Android编译,打包、签名详细教程
- 去除unity3d的splash页面(remove unity3d splash image),在android中。
- mfc关闭js弹出框
- 场景切换,菜单界面
- 简单工厂VS工厂方法VS抽象工厂