hanoi问题真的不好懂。。
我用三本书,自己摆了一下,和程序的方法是一样的。但是我就是不知道这个程序是怎样写出来的。。
#include<stdio.h>void hanoi(int n,char A,char B,char C){ if(n==1) { printf("Move sheet %d from %c to %c\n",n,A,C); } else { hanoi(n-1,A,C,B); printf("Move sheet %d from %c to %c\n",n,A,C); hanoi(n-1,B,A,C);//为什么用到2个递归。。为什么要这样用啊?凭什么呢? }}int main(void){ int n; printf("请输入盘数:"); scanf("%d",&n); hanoi(n,'A','B','C'); return 0;}
hanoi(n-1,A,C,B); //先借助C,将n-1歌盘子从A->B,此时A上有一个盘子(最底下的),B上有n-1个,C上没有 printf("Move sheet %d from %c to %c\n",n,A,C); //将最底下的盘子从A->C, hanoi(n-1,B,A,C);//为什么用到2个递归。。为什么要这样用啊?凭什么呢?//借助A,将n-1个盘子从B->C