您的位置:首页 > 其它

关于递归的理解

2013-01-17 15:37 239 查看
之前看了许多关于递归的理解,还是是懂非懂的,这个问题一直纠结在心里。

今天又碰到这个递归问题了,我认为一定要把问题分析清楚了,以后再遇到这样的问题或者类似问题才能轻车熟路,不然又要头疼或者成为问题的瓶颈了。

1)讲到递归,我觉得先从函数说起,递归首先是一个函数,具有函数的一切功能,即写一个递归要有函数的形式。比如 void function()。

2) 递归的定义,即递推和回归,即把一个大问题分成有限的小问题,并且通过这些小问题的解决,最后把大问题可以解决。

3)递归函数的格式,重要的是有个出口,即一个递归结束的条件,比如 if(btree->data=='#'),最后有个return 。

4)对递归的挖掘。递归实际是个栈的问题,而栈的特点是FILO,即先进后出。而每层栈保存了一个函数所具有的局部变量、函数返回地址,函数返回值等内容。这样当递归返回时,这层栈便被销毁,即这层栈的空间被释放,函数调用进入到上层中。

5)当递归结束时,便返回了调用该递归的地方处。

6)可以把递归看成一个算法,很多问题要用到递归,比如树。实际上算法的本质也是一个程序,这样当看到本质时,算法就没有那么吓人了。

7)递归也有缺点,比如耗时间和空间,就像人类虽然很强大也有自身的缺点一样,完美的存在只在于追求的过程和一颗平静的心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: