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);
}

http://blog.sina.com.cn/s/blog_648e17bf0101ahbt.html

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

javascript

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

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

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