一、递归在理论方面的理解
二、递归在实操方面的理解
三、实操、按例
四、我对递归的理解
五、结语
一、递归在理论方面的理解
1、在理论上,就是很简单的说法:自己调用自己
二、递归在实操方面的理解
比如下面这个案例,就是一个典型使用递归的。其实递归难不在理解理论方面,而是难在实操方面。我本人之前也是一直在实操方面不理解的,但是后面自己去琢磨有了理解。
public int fibonacci(int n)
{
if(n==1||n==2)
return 1;
else
return (n+fibonacci(n-1)+fibonacci(n-2));
}
//下面是把一个一个数字带进去,由结果推出过程
eg.fibonacci(3)
三、实操、按例
如果还是有点不理解的话,我在这里写一个树,用递归实现
编译器:VS2019
控件:微软原生树控件 [Tree]
框架:.Net FrameWork
环境版本:4.5.2
/*写树要注意的点:
1、一般写树要有两个Id,一个是父级Id,另一个是子级Id
2、数据的格式也是有一定要求的,不然即使代码没有错也很容易因为数据格式有点小毛病而出现bug
3、写树的时候很容易出现bug,所以在写的时候最好有一个异常的设置[抛异常或者是try{}catch{}]
*/
四、我对递归的理解
1、我觉得递归有点像:另一种循环而已,就是说递归也有自己停止调用的条件
2、可以把递归和循环联系起来,比如循环它是某个操作一直循环而已直到有一个条件让它停止而已,循环部分的代码没有写好很容易进入死循环。同理,递归也是一样的。递归一直循环某一步操作,也是有自己的出口的,而递归没有写好也很容易一直调用自己导致内存泄漏。
3、我觉得递归还有点像:AJAX中的同步
解释:总所周知,AJAX同步就有点像中国以前的童养媳,男的买一个小女孩要等小女孩长大才可以结婚[这个例子有点小不正经>_<]。而递归也类似,如果不太懂的可以结合我写树的例子。
五、结语
递归可能是有点绕和有点晕,但是你可以自己多些几个。多断点,找出一些规律就好了
我自己写了一个递归按例,可以去瞅瞅