第四章函数--函数进阶(递归函数)项目3汉诺塔
来源:互联网 发布:轻薄的游戏本知乎 编辑:程序博客网 时间:2024/05/17 04:45
上机内容:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。
有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,
3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,下面左图给出了移动方法的提示。
请编制递归函数输出盘子数为4时(程序调试后,试试15个、20个,直至64个,看看会如何),移动的方案。
右图为盘子数为3时的输出供参考。
上机目的:递归函数编程练习
我的程序:
运行结果:
古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。
有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,
3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,下面左图给出了移动方法的提示。
请编制递归函数输出盘子数为4时(程序调试后,试试15个、20个,直至64个,看看会如何),移动的方案。
右图为盘子数为3时的输出供参考。
上机目的:递归函数编程练习
我的程序:
/* * 程序的版权和版本声明部分: * Copyright (c) 2013, 青岛农业大学理信学院 * All rights reserved. * 文件名称:汉诺塔.cpp * 作 者:幻影行者 * 完成日期:2013 年 8 月 5 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 问题描述:如上 */#include<iostream>using namespace std;void plate_move(int plate_num,char a,char b,char c); //函数声明,将数量为plate_num的盘子从a座经b座移动到c座int main(){int n; cout<<"输入移动的盘子数:"<<endl;cin>>n;cout<<"移动的方案为:"<<endl; plate_move(n,'a','b','c');return 0;}void plate_move(int plate_num,char a,char b,char c) {if(plate_num==1){cout<<a<<"--->"<<c<<endl; return;}else{plate_move(plate_num-1,a,c,b); //先将数量为plate_num-1的盘子从a座经c座移动到b座cout<<a<<"--->"<<c<<endl; //再将剩下的一个盘子从a座移动到c座plate_move(plate_num-1,b,a,c); //然后将数量为plate_num-1的盘子再从b座经a座移动到c座,递归,完成移动return;}}
运行结果:
- 第四章函数--函数进阶(递归函数)项目3汉诺塔
- 第四章函数--函数进阶(递归函数)项目1Fibnacci序列
- 第四章函数--函数进阶(递归函数)项目2十进制数转换为二进制
- 第四章函数--函数进阶(递归函数)项目2拓展求最大公约数
- 进阶项目1.1-递归函数.奇数乘积
- 进阶项目1.2递归函数.公约数
- 进阶项目1.3-递归函数.数组最大值
- 第四章函数--函数初体验项目3特殊三位数
- 第四章 函数和递归例题
- 第四章函数和递归入门
- 紫书第四章-----函数和递归
- 进阶项目1-递归函数.立方和累加
- 章节读后感-第一部分-第四章:函数和递归
- 第十二周项目二 汉诺塔递归函数
- 浅谈PHP第四谈---递归函数
- 浅谈PHP第四弹---递归函数
- 第十二周项目1-3:递归函数
- 第四章 JavaScript 函数
- 十五个只有程序员会乐的事情
- HDU 4634 - BFS + 状态压缩
- ISO文件
- Java菜鸟学习笔记--多线程篇(三):线程死锁
- c++ 动态判断基类指针指向的子类类型(typeid)
- 第四章函数--函数进阶(递归函数)项目3汉诺塔
- 程序员IT认证有用吗?软件工程师考证有必要吗?
- ubuntu 10.04默认启动windows xp设置方法
- [HTML][CSS]IE兼容性<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
- 趣味问答汇总,不断更新中
- C++第二课
- 删除字符串中的数字和空格
- C语言一些容易出错的优先级问题
- 《算法竞赛-训练指南》第二章-2.5_UVa 11361