当前位置:网站首页>递归实现汉诺塔问题
递归实现汉诺塔问题
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");
}
运行结果如下:
如果觉得写的可以,关注点一点,下期更精彩。
边栏推荐
- Bubble sort, selection sort, insertion sort, binary search directly
- 高等数学---第九章二重积分
- IDEA常用快捷键与插件
- Port inspection steps - 7680 port analysis - Dosvc service
- $attrs/$listeners
- ClickHouse: Setting up remote connections
- Zotero如何删除自动生成的标签
- Knowledge Distillation 7: Detailed Explanation of Knowledge Distillation Code
- TCP和UDP详解
- (6) Enumeration and annotation
猜你喜欢

Detailed explanation of TCP (2)

「 每日一练,快乐水题 」1331. 数组序号转换

Learning DAVID Database (1)

(4) Recursion, variable parameters, access modifiers, understanding main method, code block

Mysql 45 study notes (twenty-four) MYSQL master-slave consistency
![[C language] Preprocessing operation](/img/69/0aef065ae4061edaf0d96b89846bf2.png)
[C language] Preprocessing operation

How Zotero removes auto-generated tags
![[C language] General method of base conversion](/img/28/954af5f47a79ff02d3cc0792ac8586.jpg)
[C language] General method of base conversion

IDEA comment report red solution

Understanding and Using Unity2D Custom Scriptable Tiles (4) - Start to build a custom tile based on the Tile class (below)
随机推荐
Mysql 45 study notes (23) How does MYSQL ensure that data is not lost
大小端模式
SIP协议标准和实现机制
Detailed explanation of TCP (2)
The els block moves the boundary to the right, and accelerates downward.
Redis uses LIST to cache the latest comments
RESTful api interface design specification
A brief introduction to the CheckboxListTile component of the basic components of Flutter
IIR filter and FIR filter
Why SocialFi achievement Web3 decentralized social in the future
(六)枚举、注解
【AUTOSAR-RTE】-4-Port和Interface以及Data Type
[Swift] Customize the shortcut that pops up by clicking the APP icon
Can't load /home/Iot/.rnd into RNG
Just debuted "Fight to Fame", safety and comfort are not lost
浅识Flutter 基本组件之CheckBox组件
$parent/$children 与 ref
[C language] General method of base conversion
VS QT - ui does not display newly added members (controls) || code is silent
【C语言进阶】文件操作(一)


