汉诺塔效果c言语:C言语汉诺塔(高分提问)

时间:2024-03-24 22:36:02 浏览:946

一、C言语汉诺塔(高分提问)

汉诺塔效果c言语:C言语汉诺塔(高分提问)

1、hanio(n-1,a,c,b);(提问:为什么参数设置为a,c,b)

2、hanio(n-1,b,a,c);(提问:而这个又设置成为b,a,c)

3、其实假设清楚了移动规则,这个就很复杂了.

4、假定有n个盘子,我们也可以看作两个盘子,其中最下面的一个为x,下面的n-1个为y,那么这两个盘子的以后就和下面一样

5、而那n-1个盘子也可以用异样方法处置.这样我们像有了一个公式:

6、这样就完成了移动,假设明白了这个,那么前面的就好懂了,

7、hanio(n-1,a,c,b);//由于hanio函数实践移动的是char a,char c,也就是第二和第四个参数,所以这儿可以看成把n-1个盘子从a移动到b;

8、hanio(n-1,b,a,c);//这儿可以看成把n-1个盘子从a移动到b;

二、C言语汉诺塔效果

关于汉诺塔这个东西是相当的笼统,我事先学习的时分看了好几个版本的教程,也没有搞懂,最后还是自己重复的了解,顿悟了,

所以我这里把事先我作为初学者的想法写给你,但是最重要的还得靠你自己的了解:

1、关于void hanoi(int n,char one,char two,char three);这个函数,表示

将n个盘子从one经过two移动到three

我事先是这么想的:先不论hanoi函数外部发什么啥,只需这么的执行一次,一定的,就有n个盘子曾经成功移动到three啦

2、了解了下面的含义后,我是这么想的:

要将5个盘子从A移动到C(经过B),就得先从A将4个移动到B(经过C),一个从A到C,再从B移动4个到C(经过A),搞定

所以说hanoi(5,'A','B','C');外面其实分为三步:

1)hanoi(4,'A','C','B');

3)hanoi(4,'B','A','C');

就是这样的三步,至于1)这部嘛,反正我坚信:只需执行了这句函数,不论进程,最终A会移动到C4个的

3、然后是最后一点,关于hanoi这个函数,是指将将n个盘子从one经过two移动到three,所以函数外部这么写:

printf('%c->%c',one,three);

}

代码和你给的略有不同,你的代码将printf专门又用了一个函数来完成,原理是一样的

代码和你给的略有不同,你的代码将printf专门又用了一个函数来完成,原理是一样的

能够是由于你真好学习到函数的相关,所以这个教程故意想弄得复杂点。。。

这里还应该有一个判别语句,if(n==1),也就是只要1块需求移动,也就不需求这么费事的三步了,直接移动就好了,所以最终的代码:

printf('%c->%c',one,three);

printf('%c->%c',one,three);

}

=============================================

=============================================

以上就是我的回答,希望对你有协助

汉诺塔这东西主要需求的还是自己的重复了解,想通了就复杂啦~

假设还有什么疑问欢迎随时向我追问

标签:

汉诺塔效果c言语:C言语汉诺塔(高分提问)推荐新闻

天下足球

更多

篮球公园

更多