当前位置:网站首页>递归实现汉诺塔问题
递归实现汉诺塔问题
2022-07-31 04:00:00 【GD_small_bit】
我今天带来了汉诺塔的C语言实现代码。
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
如下有三根柱子:
游戏规则如下:在a柱上会有n个盘子,并且盘子大的在下面,盘子小的在上面,每次只能移动一个盘子,直到把盘子按从大到小在c柱子往上排列起来。
假设盘子只有一个,那我们直接把盘子从a柱移到了c柱,即a->c。
假设a柱上的盘子有两个,那我们应当将盘子较小的移到b柱,再将盘子较大的移到c盘,再将b柱上的盘子移到c柱,即 a->b , a->c , b->c 这样也完成游戏的任务。
假设a柱上有三个盘子,那我们应当将最小的盘子从a柱移到c柱,再将较小的盘子从a柱移到b柱,再将最小的盘子从c柱移到b柱,再将最大的盘子从a柱移到c柱,再将b柱最小的柱子移到a柱,再将b柱较小的盘子移到c柱,最后把a柱的盘子移到c柱。即 a->c , a->b , c->b , a->c , b->a , b->c , a->c 。
下面是代码实现。
#include<stdio.h>
void move (char pos1,char pos2)
{
printf(" %c->%c ",pos1,pos2);
}
void Hanoi (int n ,char pos1,char pos2,char pos3)
{
if(n==1)
{
move(pos1,pos3);
}
else
{
Hanoi(n-1,pos1,pos3,pos2);
move(pos1,pos3);
Hanoi(n-1,pos2,pos1,pos3);
}
}
int main ()
{
Hanoi(1,'a','b','c');
printf("\n");
Hanoi(2,'a','b','c');
printf("\n");
Hanoi(3,'a','b','c');
printf("\n");
}
运行结果如下:
如果觉得写的可以,关注点一点,下期更精彩。
边栏推荐
- 问题1:给你1-10的列表,实现列表输出,单数在左边,双数在右边。
- volatile内存语义以及实现 -volatile写和读对普通变量的影响
- SIP协议标准和实现机制
- Select the smoke test case, and make the first pass for the product package entering QA
- 微软 AI 量化投资平台 Qlib 体验
- Redis实现分布式锁
- Web container and IIS --- Middleware penetration method 1
- Detailed explanation of TCP (2)
- ClickHouse: Setting up remote connections
- Unity2D 自定义Scriptable Tiles的理解与使用(四)——开始着手构建一个基于Tile类的自定义tile(下)
猜你喜欢

SIP Protocol Standard and Implementation Mechanism

【小土堆补充】Pytorch学习笔记_Anaconda虚拟环境使用

endian mode

The BP neural network

TCP和UDP详解

《DeepJIT: An End-To-End Deep Learning Framework for Just-In-Time Defect Prediction》论文笔记

IDEA常用快捷键与插件

Know the showTimePicker method of the basic components of Flutter

How to develop a high-quality test case?

Component pass value provide/inject
随机推荐
Detailed explanation of TCP (1)
some of my own thoughts
Understanding and Using Unity2D Custom Scriptable Tiles (4) - Start to build a custom tile based on the Tile class (below)
$attrs/$listeners
【AUTOSAR-RTE】-4-Port and Interface and Data Type
LocalDate addition and subtraction operations and comparison size
Safety 20220715
endian mode
SIP协议标准和实现机制
慧通编程第4关 - 魔法学院第6课
Based on the local, linking the world | Schneider Electric "Industrial SI Alliance" joins hands with partners to go to the future industry
How Zotero removes auto-generated tags
[CV project debugging] CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT problem
[Paper reading] Mastering the game of Go with deep neural networks and tree search
ClickHouse:设置远程连接
微软 AI 量化投资平台 Qlib 体验
已解决:不小心卸载pip后(手动安装pip的两种方式)
Component pass value provide/inject
log level and print log note
[C language] Preprocessing operation


