一、 汉诺塔问题
1递归法:
# include<stdio.h>
# include<stdlib.h>
void Move(int n,char a,char b,char c)
{
if(n==1)
{
printf("只有一个盘子,直接从a移动到c:%c->%c\n",a,c);
}
else
{
Move(n-1,a,c,b);
printf("将a上的n-1个盘子,借助c,移动到b上");
printf("将最后一个盘子从a移动到c上:%c->%c\n",a,c);
Move(n-1,b,a,c);
printf("将b上的n-1个盘子借助a移动到c上");
}
}
int main()
{
int n=0;
printf("请输入要移动的块数\n");
scanf("%d",&n);
Move(n,'a','b','c');
return 0;
}结果:
法二:添加了移动次数
# include<stdio.h>
# include<stdlib.h>
//打印出每一步的路径
void Move(char a,char c)
{
printf("%c->%c\n",a,c);
}
void Hanoi(int n,char a,char b,char c,int *time)
{
if(n>=1)