运用递归解决hanoi问题
1
/*该程序运用递归的方法解决hanoi问题*/
2
/*编写者:FreeFox*/
3
/***********************************************/
4
#i nclude <stdio.h>
5![]()
6
int main(void)
7
{
8
int n;
9![]()
10
void move(int Nun,char One,char two,char three);/*声明函数原原型/
11
12
printf("\nPlace input number of diske:");/*获取盘子的总数*/
13
scanf("%d",&n);
14![]()
15
move(n,'A','B','C');/*调用递归函数*/
16
return 0;
17
}
18![]()
19
void move(int Num,char One,char Two,char Three)/*递归函数*/
20
{
21
if (Num==1)
22
{
23
printf("%c---->%c\n",One,Three);
24
}
25
else
26
{
27
move(Num-1,One,Three,Two);/*先把Num-1个盘子移动到柱子B*/
28
printf("%c---->%c\n",One,Three);/*再把最后最大的盘子移动到柱子C*/
29
move(Num-1,Two,One,Three);/*最后把Num-1个盘子再移动到柱子C*/
30
}
31
}
32
/* CopyRight @2006 FreeFox All right reserved */
33![]()
/*该程序运用递归的方法解决hanoi问题*/2
/*编写者:FreeFox*/3
/***********************************************/4
#i nclude <stdio.h>5

6
int main(void)7
{8
int n;9

10
void move(int Nun,char One,char two,char three);/*声明函数原原型/11
12
printf("\nPlace input number of diske:");/*获取盘子的总数*/13
scanf("%d",&n);14

15
move(n,'A','B','C');/*调用递归函数*/16
return 0;17
}18

19
void move(int Num,char One,char Two,char Three)/*递归函数*/20
{21
if (Num==1)22
{23
printf("%c---->%c\n",One,Three);24
}25
else26
{27
move(Num-1,One,Three,Two);/*先把Num-1个盘子移动到柱子B*/28
printf("%c---->%c\n",One,Three);/*再把最后最大的盘子移动到柱子C*/29
move(Num-1,Two,One,Three);/*最后把Num-1个盘子再移动到柱子C*/30
}31
}32
/* CopyRight @2006 FreeFox All right reserved */33



浙公网安备 33010602011771号