X-小菜鸟 发表于 2021-7-29 21:10:59

汉诺塔

#include <stdio.h>
//(1) 把n-1个盘子由A 移到 B;
//(2) 把第n个盘子由 A移到 C;
//(3) 把n-1个盘子由B 移到 C;
//即
//(1)中间的一步是把最大的一个盘子由A移到C上去;
//(2)中间一步之上可以看成把A上n-1个盘子通过借助辅助塔(C塔)移到了B上,
//(3)中间一步之下可以看成把B上n-1个盘子通过借助辅助塔(A塔)移到了C上;
int hanoi(int n,char a,char b,char c);
int main()
{
    int n;
    printf("inupt a number:");
    scanf("%d",&n);
    hanoi(n,'a','b','c');
    return 0;
}
int hanoi(int n,char a,char b,char c)
{
    if(n==1)
    {
      printf("%c-->%c\n",a,c);
    }
    else if(n>=2)
    {
      hanoi(n-1,a,c,b);//bc换位
      printf("%c-->%c\n",a,c);
      hanoi(n-1,b,a,c);//ab换位
    }
}
页: [1]
查看完整版本: 汉诺塔