c语言递归求塔移动次数,【C语言】Hanoi(汉诺)塔问题,求移动盘子的步骤(递归法)...
所有的循环算法都可以用递归实现,反之不成立,这足以证明递归的重要性!
Hanoi(汉诺)塔问题。古代有一个焚塔,塔内有3个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在上,小的在下,有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移到一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上,在移动过程中可以利用B座。输出移动盘子的步骤。
解:由于64个盘子移动步骤太多,本程序以5个盘子为例进行输出
因为手机浏览器显示代码不好看,我会在这里添加代码的图片和代码 以及效果图
图片为:
代码为:
#include "stdio.h"
void hanoi(int n,char A,char B,char C) {
//设置移动盘子的结束条件,如果A当前还有一个盘子那么就把他直接移动到C
if(n == 1) {
printf("%c -> %c\n",A,C);
}else{
//否则开始递归
hanoi(n-1,A,C,B);
printf("%c -> %c\n",A,C);
hanoi(n-1,B,A,C);
}
}
int main() {
//如果有五个盘子,和A,B,C三个柱子,否则开始递归.
hanoi(5,'A','B','C');
}
运行结果:
root@Alan:/home/alan/桌面# ./tim
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
A -> B
C -> B
C -> A
B -> A
C -> B
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
B -> A
C -> B
C -> A
B -> A
B -> C
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
效果图:
c语言递归求塔移动次数,【C语言】Hanoi(汉诺)塔问题,求移动盘子的步骤(递归法)...相关推荐
- 递归算法以及Hanoi(汉诺)塔问题及其详细解释
递归在算法中是非常重要的,可以说几乎所有的循环算法都可以用递归来实现,这足以体现递归的重要性,利用递归的条件一般为一下: 定义是递归的 像有些数学函数就是递归定义的,例如大家熟悉的阶层函数: 2.利用 ...
- C语言---移盘子----Hanoi(汉诺)塔问题,显示移动盘子的步骤
C语言-移盘子----Hanoi(汉诺)塔问题,显示移动盘子的步骤 在学习递归的过程中,Hanoi(汉诺)塔问题是避开不了的,很多新手在这儿一脸懵. 我们先简单介绍一些Hanoi(汉诺)塔问题到底是个 ...
- Strange Towers of Hanoi 汉诺塔问题及其升级(递推)四个汉诺塔问题
今天学习递推的汉诺塔问题,非常的有趣 文章目录 1.汉诺塔问题来源 分析 2.Strange Towers of Hanoi[DP][递推] 题目大意: 思考 解题步骤: 1.汉诺塔问题来源 汉诺塔( ...
- 信息学奥赛一本通 1205:汉诺塔问题 | OpenJudge 2.2 6261:汉诺塔问题
[题目链接] [ybt 1205:汉诺塔问题 OpenJudge 2.2 6261:汉诺塔问题 [题目考点] 1. 递归 [解题思路] 设输入的左中右三个杆分别为a,b,c.题目要将摞在a杆上的n层汉 ...
- 汉诺塔python代码解释_python实现汉诺塔算法
题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...
- C++Tower of Hanoi汉诺塔的实现算法(附完整源码)
C++Tower of Hanoi汉诺塔的实现算法 C++Tower of Hanoi汉诺塔的实现算法完整源码(定义,实现,main函数测试) C++Tower of Hanoi汉诺塔的实现算法完整源 ...
- Hanoi(汉诺)塔问题
问题描述: Hanoi(汉诺)塔问题.古代有一个梵塔,塔内有3个座A,B,C,开始时A座有n个盘子,盘子大小不等,大的在下,小的在上.有一个老和尚想把这n个盘子,从A座移动到C座,但是每次只允许移动一 ...
- c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔
本文约2200字,主要讲了C语言基础之函数,递归,数组作为函数参数以及案例.练习题等. 带你进入C语言的世界,入门C语言,后边将持续更新.可以收藏学习.想了解C语言基础之函数,函数的基本概述,函数的调 ...
- 第023、024讲:递归:这帮小兔崽子、汉诺塔
动动手 0. 使用递归编写一个十进制转换为二进制的函数(要求采用"取2取余"的方式,结果与调用bin()一样返回字符串形式). def Bin(x):if x==0:return ...
最新文章
- java 对比两个表的字段的差异_Joolun小程序商城 2.2.2版本上线了——Java微信快速开发平台...
- 【FI学习笔记】客户发票收款清账
- 实体类?Dao接口?Mapper映射文件?都别写了!!!用这种方法就可以
- 爱情才是程序员的第一生产力
- android自动布局优先级,自动布局AutoLayout
- 转:XMPP协议、MQTT协议、HTTP协议、CoAP协议的基本比较
- 【数字信号调制】基于matlab无线电信号调制识别【含Matlab源码 912期】
- eclipse优化记录
- ftp 命令访问 ftp服务器
- 专为前端开发者准备的 15 款优秀的 Sublime Text 插件
- python中 r'', b'', u'', f'' 的含义
- F8BT, PFBT, PFO-BT cas:210347-52-7,齐岳提供聚合物光电材料
- 云游戏的2022:破局、新生、元宇宙
- Bootstrap全部知识点总结
- 9-5 删除字符串中指定字符
- 连接nacos服务器报错,显示/nacos/v1/ns/instance after all servers([localhost:8848])
- 剖析“Flash助手新鲜事 头条”弹窗小广告——Adobe竟和中国广告商同流合污!
- 2020年4月程序员工资统计,人工智能工资大跌
- 白话数字签名(3)——Web程序中的数字签名【转】
- Matlab:安装详细教程
热门文章
- 为什么只有128KB的魂斗罗,可以那么长的剧情?
- 服务器系统版本选择,云服务器选择系统版本
- java poi设置单元格格式为数值,Apache POI 如何读取Excel中数值类型单元格所规定的保留小数位?...
- 百度小程序opencard书法字典名家书法等测试日志记录
- PyTorch convert function for op ‘hardswish‘ not implemented.
- mobilefacenet
- android c# websocket
- Ubuntu下编译ffmpeg+openh264+x264
- VOC2007基本信息
- 判断 std map 中是否有 key