首页 > 其他分享 >C1解决汉诺塔问题

C1解决汉诺塔问题

时间:2022-09-03 20:27:44浏览次数:54  
标签:柱子 移动 int char 汉诺塔 解决 C1 柱上 盘子

定义两个函数即可解决

一个f(char a,char b)函数,一个g(int i,char a,char b,char c)函数

f函数表示把a上一个圆盘移动到b上,

g函数表示把a上i个圆盘通过b移动到c上,重复操作即可解决问题。

 

代码如下

 1 #include<stdio.h>
 2 void f(char a,char b)//把一个柱子上的圆盘移到另一个柱子 
 3 {
 4 printf("把%c柱上的一个盘子移动到%c柱子上\n",a,b); 
 5 }
 6 void g(int i,char a,char b,char c)//把 a柱上的i个盘子通过b柱移动到c柱上 
 7 {
 8     //首先判断柱子上盘子的个数的情况 
 9     if(i==2){//盘子数为2的情况 
10         f(a,b);//把a柱子一盘移到b 
11         f(a,c);//把a柱子一盘移动到c 
12         f(b,c);//在把b柱子一盘移动到c即可 
13     }
14     else if(i>2){//盘子的数量大于2的情况 
15         g(i-1,a,c,b);//把a柱子上i-1个盘通过c移动到b ,这样a柱上只有一个盘子 
16         f(a,c);//再把a柱子上一盘移动到c 
17         g(i-1,b,a,c);//把b柱上i-1个盘子通过a移到c柱 
18         
19     }
20 }
21 int main()
22 {
23 g(3,'a','b','c')    ;//传入int和char类型的参数 
24     
25 }

 

标签:柱子,移动,int,char,汉诺塔,解决,C1,柱上,盘子
From: https://www.cnblogs.com/mayang150/p/Han_nuo_ta.html

相关文章