TA的每日心情 | 无聊 2017-3-9 21:22 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
个人理解,不对的地方请指出来,共同学习。
int hlt(int n , char a ,char b ,char c ){
if (n<=0)
return 0;
hlt(n-1,a, c ,b);
cout << a << " to " << c << endl;
hlt(n-1,b, a ,c);
}
1、递归函数实际上只处理最简单的情况,也就是说我们要解决的问题是N个这样的基本情况。(这就是先决条件)。
处理的基本情况 hlt(n-1,a, c ,b);
2、递归函数内有两部分,一部分是处理部分,处理的是基本情况。
hlt(n-1,a, c ,b);
cout << a << " to " << c << endl;
hlt(n-1,b, a ,c);
另一部是不处理部分(不处理部分要有return这样是为了结束递归)
if (n<=0)
return 0;
3、为了使递归结束,要函数每次调用自己时要使问题越来越细,最终到基本情况使递归结束。
hlt(n-1,a, c ,b);
n-1就是使问题越来越细,最终到基本情况使递归结束(n==1)。
4、递归调用必需要能回到基本情况,因每次调用就会产生一个新的函数副本,要是不能回基本情况结束递归,最终会使内存耗尽而死机。
[ 本帖最后由 ABCdiyPE 于 2009-6-15 18:09 编辑 ] |
|