您的位置:首页 > 其它

考考自己   递归应该怎么看?

2013-12-03 18:41 309 查看
void han(int num,char a,char b,char c)
{
if(num<=0)return ;
// step 1
han(num-1,a,c,b);//将除最下面一个的所有通过c转到b
// step 2
printf("%d:%c---------->%c\n",num,a,c);//a到c
// step 3
han(num-1,b,a,c);//将除最下面一个的所有通过a转到c,这个调用还有a、b交换的处理
}
han(n/*多少个盘子*/,'A','B','C');可以想象一下,按照常人的理解,在不多盘子的情况下 是可以手动写出来.
但是多了呢?很明显,不能这样做,那该如何理解上面的递归呢?
<1>递归处理的返回判定
<2>K = N - 1 时
<3>K = N 时
怎么样 有启发没?
反过来 即 假如当前把所有的盘子 除了最上面的没有移到指定位置,那么就是<1>,依此K = 2...N
本文出自 “BaggerSky” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐