Hz495599
Hz495599
2016-10-24 03:12
采纳率: 0%
浏览 1.7k

C语言 hanoi塔用递归函数求解问题,怎么去理解?能不能解释一下?!小白求教

#include
void hanoi(unsigned int n,char fr,char te,char to);
void moveplate(unsigned int n,char fr,char to);
int main()
{
unsigned int n;
scanf("%u",&n);
hanoi(n,'A','B','C');
return 0;
}
void hanoi(unsigned int n,char fr,char te,char to)
{
if(n==1)
moveplate(n,fr,to);
else
{
hanoi(n-1,fr,to,te);
moveplate(n,fr,to);
hanoi(n-1,te,fr,to);
}
}
void moveplate(unsigned int n,char fr,char to)
{
printf("%u:%c %c\n",n,fr,to);
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • caozhy
    点赞 评论
  • Zhang__Yue
    Zhang__Yue 2016-10-24 03:49

    你可以把它理解为一个完全二叉树,高度为N。

    点赞 评论
  • qq_30560385
    宇宙第一蛮王 2016-10-24 04:00

    javascript

    点赞 评论
  • qq423399099
    小灸舞 2016-10-24 05:41

    “给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
    递归函数关注以下几个因素
    ·退出条件
    ·参数有哪些
    ·返回值是什么
    ·局部变量有哪些
    ·全局变量有哪些
    ·何时输出
    ·会不会导致堆栈溢出

    也可以看看知乎上的回答:https://www.zhihu.com/question/24385418

    点赞 评论
  • weixin_37108551
    倔强的卷毛 2016-12-19 14:11

    其实我也在疑惑中,不明白他们怎么替换字符,我也单步调试了很多次了,就是不明白,就知道他们的在递减的时候放到了中存储,直到n等于一的时候他们就跳转到了输出函数那里了

    点赞 评论

相关推荐