【c语言习题】函数递归调用实现汉诺塔

news2025/1/10 16:17:09

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c语言系列专栏:c语言之路重点知识整合 🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

递归知识点:【c语言】函数递归调用


目录

  • 介绍
  • 规则:
  • 代码
  • 运行结果
  • 分析:

介绍

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

规则:

若干个圆盘按从小到大的顺序放在A柱上,A是起始柱,B是中转柱,C是目标柱

  • 每次只能移动一个圆盘,并每次只能移动最上层的

  • 小的圆盘只能叠放在大圆木的上面

  • 从上到下按从小到大的顺序把所有的圆盘移动到C柱上

  • 移动的次数最少需多少次
    在这里插入图片描述

代码

#include <stdio.h>
void HanNuoTa(int n, char A, char B, char C);
int main()
{
	char A='A';
	char B='B';
	char C='C';
	int n;
	printf("请输入层数:");
	scanf_s("%d", &n);
	HanNuoTa(n,A,B,C);
	return 0;
}
void HanNuoTa(int n, char from, char mid, char to)	//借助B将A上的盘子移动到C from:A mid:B to:C
{
	if (n == 1)	//只有一个盘子时直接移动到目标柱子
	{
		printf("%c->%c\n", from, to);
	}
	else
	{
		HanNuoTa(n - 1, from, to, mid);//将前n-1个盘子从A移动到B
		printf("%c->%c\n", from, to);//将最后一个盘子从A移动到C
		HanNuoTa(n - 1, mid, from, to);//将前n-1个盘子从B移动到C
	}
}

运行结果

在这里插入图片描述

分析:

重点

from:A    mid:B    to:C

终止条件:只有一个盘子时

  • 将前n-1个盘子从A移动到B

  • 最后一个盘子从A移动到C

  • 将前n-1个盘子从B移动到C

递归过程会自动完成重复调用函数的任务,直至所有盘子都移动到目标柱子位置。

时间复杂度为O(2^n),空间复杂度为O(n)

在这里插入图片描述


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stable-diffusion安装controlnet插件

1、通过url安装controlnet插件 1&#xff09;extensions → install from URL → install 然后填入&#xff1a;https://github.com/Mikubill/sd-webui-controlnet 2&#xff09;installed → apply and restart UI 2、下载模型 下载controlnet模型&#xff08;50G左右&#…

chatgpt赋能python:Python交互:让你的编程更高效

Python 交互&#xff1a;让你的编程更高效 Python 是一门功能强大的编程语言&#xff0c;拥有大量的第三方库、工具和框架&#xff0c;能够帮助开发者实现各种各样的功能和应用。在 Python 编程中&#xff0c;交互&#xff08;Interactive&#xff09;模式是一种非常重要的工具…

探索基于人工智能的手机在网时长风险评估

引言 在当今竞争激烈的商业环境中&#xff0c;企业面临着不断增长的风险和挑战。为了保持竞争优势和提供优质的用户体验&#xff0c;企业需要能够准确评估用户的风险&#xff0c;并提供个性化的服务来满足不同用户的需求。 本文将介绍如何结合手机在网时长、手机在网状态和手…

Flutter控件之CircularProgressIndicator

CircularProgressIndicator的作用 Flutter中的CircularProgressIndicator是一个圆形进度指示器&#xff0c;用于表示正在进行的任务的进度。它通常用于长时间运行的任务&#xff0c;例如文件下载、网络请求等。CircularProgressIndicator可以在圆周上旋转&#xff0c;以表示正…

丽江“美丽县城”建设,高精度地籍免像控案例分享

一、项目背景 云南省地矿测绘院于2020年6月承接丽江市玉龙县“美丽县城”建设项目1&#xff1a;500倾斜摄影及地形图测绘项目。项目要求对玉龙县城区及其周边等约30平方公里区域进行优于3CM倾斜摄影测量。 并基于三维模型完成地形高程点、地貌、地物特征点的采集成图&#xf…

leetcode203. 移除链表元素

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【LeetCode】 &#x1f353;希望我们一起努力、成长&#xff0c;共同进步。 题目链接 给你一个链表的头节点 head 和一个整数 val &…

Docker安装OpenWrt

我笔记本MacOs安装Docker OpenWrt 失败了,网络一直容器内外无法访问. 今天使用虚拟机安装一下,虚拟机使用Parallels,系统使用kali 一、安装docker sudo apt install docker.io 二、把网卡混杂模式打开 根据您当前的ip查看网卡&#xff01;&#xff01;&#xff01; 在您的liu…

如何在华为OD机试中获得满分?Java实现【数组的中心位置】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

【C++】STL中stack的用法及模拟实现

目录 一、stack的简介二、stack的使用三、stack的模拟实现 一、stack的简介 stack是一种容器适配器&#xff0c;专门用在后进先出操作的上下文中环境中&#xff0c;其中的元素只允许从容器固定的一端进行插入和删除操作。stack是作为容器适配器来实现的&#xff0c;容器适配器…

市值蒸发21亿港元,王一博还能拉着乐华走多久?

5月22日&#xff0c;#乐华被冻结2390万财产#话题冲上热搜。 近日&#xff0c;头顶“王一博”光环的乐华娱乐集团&#xff08;下称“乐华娱乐”&#xff0c;02306.HK&#xff09;交出了上市后的首份财报。 4月25日&#xff0c;财报公布的首个交易日&#xff0c;其股价下跌2.06…

【iOS】【最新】2023苹果开发者账号注册流程(公司类型)

一 Apple Developer 申请开发者账号 Apple Developer 点击 Account 创建 Apple ID 最好新注册一个新的&#xff0c;专门用做开发。 需要注意的是 开发者的名字和 ID 想好在填写 &#xff0c;注册成功后&#xff0c;不能自己修改&#xff0c;需要修改的话只能联系苹果客服。…

CCF-CSP 201903-1 小中大

该题比较简单&#xff0c;因为所给数据都是排好序的了&#xff0c;对于最大值与最小值我们只需判断第一个元素与最后一个元素的关系即可&#xff0c;而中位数的判断则与n的大小有关&#xff0c;如果n为偶数&#xff08;下标从1开始&#xff09;&#xff0c;那么中间会存在两个数…

各个查询引擎是如何提高写入效率,查询效率

RocketMq 1. 顺序IO 如果消息生产者生产了消息&#xff0c;发送到broker之后&#xff0c;需要存储在磁盘中&#xff0c;如果直接存储到话&#xff0c;并发度会很小&#xff0c;因为操作磁盘会很慢&#xff0c;尤其是操作随机IO&#xff0c;因此看看能不能在写入磁盘的时候&am…

制造企业如何抓住2023经济复苏做好数字化转型

2022年&#xff0c;在地缘政治冲突、新冠疫情、供应链挑战、通胀压力等多重冲击下&#xff0c;中国经济迎难而进。2023年随着防疫政策的调整和优化&#xff0c;也将成为经济全面复苏和发展的重要一年&#xff0c;这对于制造企业来说是一个重要的机遇。 据国际数据公司IDC预测&a…

尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】尚硅谷Docker实战教程-笔…

Java | 一分钟掌握定时任务 | 9 - PowerJob分布式定时任务

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱整理编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 我们选择一套框架或者技术的时候&#xff0c;一定要知道它的特点和…

电源大师课-初阶

第一课 电源系统构成和基础原理 1-电源效率 总的Pout除以Pin 2-输出电压调整率 源调整率(输入电压变化时&#xff0c;输出稳定程度) 负载调整率(输出负载变化时&#xff0c;输出稳定度) 温度调整率(工作环境温度在极限情况下&#xff0c;输出的稳定度) 3-纹波测试(20MHz、最…

KD7742电气安规综合测试仪

一、产品简介 KD7742电气安规综合测试仪具有交/直流耐压、绝缘电阻等项目的测试分析功能&#xff0c;能显示电压、电流和电阻的波形图以及趋势图&#xff0c;以便更直观的监测分析绝缘性能和绝缘崩溃时的各项指标&#xff0c;适用于高要求的测试分析场合。 产品具有测试参数范围…

郑州信源招标采购系统 定制

概述&#xff1a; 招标采购系统是郑州信源运用“互联网”、大数据、人工智能、区块链、物联网等新兴技术&#xff0c;结合供应链管理理念&#xff0c;以招标采购为核心&#xff0c;提供交易、管理、数据、服务、监管为一体的高标准采购管理平台&#xff0c;招标采购系统根据客户…

基于html+css的图片展示93

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…