首页 > 其他分享 >用C语言实现汉诺塔游戏

用C语言实现汉诺塔游戏

时间:2024-03-29 19:58:44浏览次数:19  
标签:柱子 游戏 C语言 汉诺塔 盘子 移动 函数

65af2c9288bf408381ebbc0d170c9fee.png

汉诺塔游戏。游戏目标是将A柱子上的盘子移动到C柱子上,且每次小的盘子要放在大的盘子上面。如只有一个盘子则直接移至C柱子。以如图所示为例子。

3个盘子要移动至C柱子,具体步骤为:

A到C,A到B, C到B, A到C, B到A, B到C, A到C。

总共7步。也就是

  1. 先把A柱子两个盘子(n-1)通过C柱子移动到B柱子
  2. 再把A柱子剩余的一个盘子移动到C柱子
  3. 最后把B柱子上的两个盘子(n-1)通过A柱子移动到C柱子上。

经实测,所需移动步数与盘子数(n)的表达式如下:1(n=1)和2^n-1(n>1)。

由此可以用递归函数得:

当n==1 return 1;

当n>1  f(n-1);

创建一个函数Hanoi(number,'A', 'B', 'C' ); 表示将n个盘子从A柱子通过B柱子移动到C柱子的过程。(对应第一三步)

再创建一个函数Move(x, y); 表示将一个盘子从x柱子移动到y柱子。(对应第二步)

由此可以写出代码:

 

59917de2ecc3447197a32f7e2328863c.png

输入4为例,输出结果如下:86f3c95ed9144fc7bb7aeedcdbf85337.png

 

 

 

标签:柱子,游戏,C语言,汉诺塔,盘子,移动,函数
From: https://blog.csdn.net/2402_82484551/article/details/137154009

相关文章

  • 简单介绍c语言程序的编译与链接
    程序运行的背后程序在运行时经历了四个步骤,分别是预编译(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。预编译预编译也称预处理,源代码文件(.c)和相关的头文件(.h)等被预编译器cpp预编译成一个.i文件。编译编译过程就是将预处理后的文件进行一系列......
  • 【经典游戏】Java实现飞机大战小游戏
    【引言】90、00后的童年是游戏机,当时的飞机大战,一度风靡全球。 经典项目java实现飞机大战射击游戏资源-CSDN文库一、游戏设计实现飞机大战游戏是一个很有趣的项目,可以帮助你学习和练习Java编程的各种方面,包括面向对象设计、图形界面编程等。下面是一个详细的分析,涵盖了......
  • C语言 结构体和联合体、解释C语言中的结构体及其用途。
    一、结构体和联合体结构体和联合体在C语言中都是重要的数据类型,但它们在使用和特性上有所区别。结构体是由一批数据组合而成的结构型数据,由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体中的每个数据成员都占用自己的内存空间,结构体......
  • 描述C语言中的循环结构(for,while,do-while)
    一、描述C语言中的循环结构(for,while,do-while)C语言提供了三种主要的循环结构:for循环、while循环和do-while循环。这些循环结构允许你重复执行一段代码,直到满足特定的条件为止。for循环for循环通常用于已知循环次数的场景。它的基本语法如下:c复制代码for(初始化;条件;更......
  • Switch 和 PS1 模拟器:3000+ 游戏随心玩 | 开源日报 No.174
    Ryujinx/RyujinxStars:26.1kLicense:MITRyujinx是用C#编写的实验性任天堂Switch模拟器。该项目旨在提供出色的准确性和性能、用户友好的界面以及稳定的构建。它已经通过了大约4050个测试,其中超过4000个可以启动并进入游戏,其中大约3400个被认为是可玩的。......
  • steam家庭组怎么怎么用、steam家庭组共享游戏的设置教学
    Steam最近推出了一个新功能叫作"Steam家庭",同一个家庭组的成员可以共享游戏库,真是太棒了!如果你想尝试这个功能,首先需要创建一个Steam家庭,然后邀请最多5个家人加入。你可以在Steam客户端、手机或网页浏览器上管理这个家庭。然而,有一点需要注意,被邀请进来的家人必须是同一个区服......
  • C语言之编译链接
    目录一、翻译环境和运行环境二、预编译1.预定义符号2.#define3.头文件的包含三、翻译环境1.预编译2.编译3.汇编4.链接一、翻译环境和运行环境在ANSIC的任何⼀种实现中,存在两个不同的环境第一种是翻译环境,在这个环境中,源代码被转换为可执行的二进制指令。翻译环......
  • 【拯救大学牲】人民邮电出版社C语言程序设计第四章编程题答案
     注:本文所有程序均为笔者自己编写,仅供交流学习使用,欢迎一切纠错与指正。目录1.根据x的值,计算y。2.输入4个整数,从小到大排序。3.求解一元二次方程的实根4.输入一个整数,判断它能否被3和5整除,并输出一下信息之一:5.输入整存整取金额及存期,计算出利息(不计利息税)。利息=金额×......
  • C语言:文件操作
    1.什么是文件磁盘(硬盘)上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。1.1 程序文件程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程(windows环境后缀为.exe)。1.2数据文件文件的内容不一定......
  • C语言运算符和表达式——增1和减1运算符
    目录增1和减1运算符一元运算符前缀增1/减1运算符后缀增1/减1运算符前缀与后缀对变量和表达式的影响稍微复杂一点的例子增1和减1运算符的优缺点增1和减1运算符增1运算符(Increment)++*使变量的值增加1个单位减1运算符(Decrement)--*使变量的值减少1个单位注意:操作数......