首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

hanoi有关问题真的不好懂。

2012-11-07 
hanoi问题真的不好懂。。我用三本书,自己摆了一下,和程序的方法是一样的。但是我就是不知道这个程序是怎样写

hanoi问题真的不好懂。。
我用三本书,自己摆了一下,和程序的方法是一样的。但是我就是不知道这个程序是怎样写出来的。。

C/C++ code
#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;}


[解决办法]
可以这样理解...

C/C++ code
      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 

热点排行