古有老和尚搬金圆盘,今有程序员写代码。

Posted SpongeBob_house

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了古有老和尚搬金圆盘,今有程序员写代码。相关的知识,希望对你有一定的参考价值。

//汉诺塔的规则

大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘

下面进行图片演示//第一次移动,要把A柱子上的前n-1个移动到B柱子上;(图1)
//第二次移动,直接把A柱子上的最后一个移动到C柱子上;(图2)
//第三次移动,把B柱子上的n - 1个柱子通过柱子A移动到柱子C上。图三

 


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//首先说明一点 我们写的递归一定要讲究 相似之处 并且所有的事件都会归一 会为你想完成的那件事情服务 这就是递归 并且递归一定要有一个靠近的点
//第一次移动,要把A柱子上的前n-1个移动到B柱子上;(图1)
//第二次移动,直接把A柱子上的最后一个移动到C柱子上;(图2)
//第三次移动,把B柱子上的n - 1个柱子通过柱子A移动到柱子C上。
//不管你要移动多少 总会有这个步骤进行 操作 所以我们可以依照这个操作 并且
//所以写的步骤都不会冲突的
void hanoi(int n,char a,char b,char c)
{
	if (n == 1)
	{
		printf("%c->%c", a, c);//这个位置出现 是为了说明当只有一个的时候 我们的移动操作过程 直接移动 
	}
	//以下三个代码就是我们实现的思路方法 
	else
	{
		hanoi(n - 1, a, c, b);//A柱子上的前n-1个移动到B柱子上  
		printf("%c->%c", a, c);//直接把A柱子上的最后一个移动到C柱子上 这个是唯一一个进行打印的步骤 也就是说 真正进行打印的步骤  注意我们的a c不是刚刚的 a  c了需要注意一下才行
		hanoi(n - 1, b, a, c);//这个代表将把B柱子上的n - 1个柱子通过柱子A移动到柱子C上
	}

}

int main()
{
	int n = 0;
	scanf("%d", &n);//这里确定是写几个盘子 进行
	hanoi(n, 'A', 'B', 'C');
}

以上是关于古有老和尚搬金圆盘,今有程序员写代码。的主要内容,如果未能解决你的问题,请参考以下文章

「1.0」一个人开发一个App,小程序从0到1,起航了

微信小程序-开心大转盘(圆盘指针)代码分析

@ConditionalOn...注解,条件组合你知道吗?

提效小技巧——记录那些不常用的代码片段

递归函数,三级菜单专区

比特币面临关键阻力位,短线稍作调整继续上行