所有的循环算法都可以用递归实现,反之不成立,这足以证明递归的重要性!

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(汉诺)塔问题,求移动盘子的步骤(递归法)...相关推荐

  1. 递归算法以及Hanoi(汉诺)塔问题及其详细解释

    递归在算法中是非常重要的,可以说几乎所有的循环算法都可以用递归来实现,这足以体现递归的重要性,利用递归的条件一般为一下: 定义是递归的 像有些数学函数就是递归定义的,例如大家熟悉的阶层函数: 2.利用 ...

  2. C语言---移盘子----Hanoi(汉诺)塔问题,显示移动盘子的步骤

    C语言-移盘子----Hanoi(汉诺)塔问题,显示移动盘子的步骤 在学习递归的过程中,Hanoi(汉诺)塔问题是避开不了的,很多新手在这儿一脸懵. 我们先简单介绍一些Hanoi(汉诺)塔问题到底是个 ...

  3. Strange Towers of Hanoi 汉诺塔问题及其升级(递推)四个汉诺塔问题

    今天学习递推的汉诺塔问题,非常的有趣 文章目录 1.汉诺塔问题来源 分析 2.Strange Towers of Hanoi[DP][递推] 题目大意: 思考 解题步骤: 1.汉诺塔问题来源 汉诺塔( ...

  4. 信息学奥赛一本通 1205:汉诺塔问题 | OpenJudge 2.2 6261:汉诺塔问题

    [题目链接] [ybt 1205:汉诺塔问题 OpenJudge 2.2 6261:汉诺塔问题 [题目考点] 1. 递归 [解题思路] 设输入的左中右三个杆分别为a,b,c.题目要将摞在a杆上的n层汉 ...

  5. 汉诺塔python代码解释_python实现汉诺塔算法

    题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...

  6. C++Tower of Hanoi汉诺塔的实现算法(附完整源码)

    C++Tower of Hanoi汉诺塔的实现算法 C++Tower of Hanoi汉诺塔的实现算法完整源码(定义,实现,main函数测试) C++Tower of Hanoi汉诺塔的实现算法完整源 ...

  7. Hanoi(汉诺)塔问题

    问题描述: Hanoi(汉诺)塔问题.古代有一个梵塔,塔内有3个座A,B,C,开始时A座有n个盘子,盘子大小不等,大的在下,小的在上.有一个老和尚想把这n个盘子,从A座移动到C座,但是每次只允许移动一 ...

  8. c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔

    本文约2200字,主要讲了C语言基础之函数,递归,数组作为函数参数以及案例.练习题等. 带你进入C语言的世界,入门C语言,后边将持续更新.可以收藏学习.想了解C语言基础之函数,函数的基本概述,函数的调 ...

  9. 第023、024讲:递归:这帮小兔崽子、汉诺塔

    动动手 0. 使用递归编写一个十进制转换为二进制的函数(要求采用"取2取余"的方式,结果与调用bin()一样返回字符串形式). def Bin(x):if x==0:return ...

最新文章

  1. java 对比两个表的字段的差异_Joolun小程序商城 2.2.2版本上线了——Java微信快速开发平台...
  2. 【FI学习笔记】客户发票收款清账
  3. 实体类?Dao接口?Mapper映射文件?都别写了!!!用这种方法就可以
  4. 爱情才是程序员的第一生产力
  5. android自动布局优先级,自动布局AutoLayout
  6. 转:XMPP协议、MQTT协议、HTTP协议、CoAP协议的基本比较
  7. 【数字信号调制】基于matlab无线电信号调制识别【含Matlab源码 912期】
  8. eclipse优化记录
  9. ftp 命令访问 ftp服务器
  10. 专为前端开发者准备的 15 款优秀的 Sublime Text 插件
  11. python中 r'', b'', u'', f'' 的含义
  12. F8BT, PFBT, PFO-BT cas:210347-52-7,齐岳提供聚合物光电材料
  13. 云游戏的2022:破局、新生、元宇宙
  14. Bootstrap全部知识点总结
  15. 9-5 删除字符串中指定字符
  16. 连接nacos服务器报错,显示/nacos/v1/ns/instance after all servers([localhost:8848])
  17. 剖析“Flash助手新鲜事 头条”弹窗小广告——Adobe竟和中国广告商同流合污!
  18. 2020年4月程序员工资统计,人工智能工资大跌
  19. 白话数字签名(3)——Web程序中的数字签名【转】
  20. Matlab:安装详细教程

热门文章

  1. 为什么只有128KB的魂斗罗,可以那么长的剧情?
  2. 服务器系统版本选择,云服务器选择系统版本
  3. java poi设置单元格格式为数值,Apache POI 如何读取Excel中数值类型单元格所规定的保留小数位?...
  4. 百度小程序opencard书法字典名家书法等测试日志记录
  5. PyTorch convert function for op ‘hardswish‘ not implemented.
  6. mobilefacenet
  7. android c# websocket
  8. Ubuntu下编译ffmpeg+openh264+x264
  9. VOC2007基本信息
  10. 判断 std map 中是否有 key