当前位置:网站首页>递归实现汉诺塔问题
递归实现汉诺塔问题
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");
}
运行结果如下:
如果觉得写的可以,关注点一点,下期更精彩。
边栏推荐
- $parent/$children 与 ref
- errno错误码及含义(中文)
- No qualifying bean of type question
- els 方块向右移
- MySQL 8.0.30 GA
- RESTful api interface design specification
- The use of beforeDestroy and destroyed
- Redis uses sorted set to cache latest comments
- 高等数学---第九章二重积分
- Based on the local, linking the world | Schneider Electric "Industrial SI Alliance" joins hands with partners to go to the future industry
猜你喜欢

Mysql 45 study notes (twenty-five) MYSQL guarantees high availability

IDEA common shortcut keys and plug-ins
![[Swift] Customize the shortcut that pops up by clicking the APP icon](/img/d4/84b237995fc3d3700916eb57f6670d.png)
[Swift] Customize the shortcut that pops up by clicking the APP icon

LocalDate addition and subtraction operations and comparison size

已解决(最新版selenium框架元素定位报错)NameError: name ‘By‘ is not defined

IDEA comment report red solution

type_traits元编程库学习

Detailed explanation of TCP (1)

C语言从入门到如土——数据的存储

Know the showTimePicker method of the basic components of Flutter
随机推荐
Daily practice of LeetCode - palindrome structure of OR36 linked list
「 每日一练,快乐水题 」1331. 数组序号转换
【AUTOSAR-RTE】-4-Port和Interface以及Data Type
Distributed locks and three implementation methods
Notes on the establishment of the company's official website (6): The public security record of the domain name is carried out and the record number is displayed at the bottom of the web page
Daily practice of LeetCode - 138. Copy a linked list with random pointers
beforeDestroy与destroyed的使用
浅识Flutter 基本组件之CheckboxListTile组件
Safety 20220715
《DeepJIT: An End-To-End Deep Learning Framework for Just-In-Time Defect Prediction》论文笔记
Safety 20220718
The els block moves the boundary to the right, and accelerates downward.
Web container and IIS --- Middleware penetration method 1
5. How does the SAP ABAP OData service support the $filter operation
Good place to download jar packages
Zotero如何删除自动生成的标签
C primer plus study notes - 8, structure
Redis 使用LIST做最新评论缓存
MySQL 8.0.30 GA
安全20220722


