递归

我对递归的理解,是从递和归开始的。递是一个发送的过程,归是一个得到的过程。递归就是在不停的发送和得到,然后根据条件来控制发送和得到的结果。

 

 最简单的递归不就是这样的吗。递归也就是一个深度的循环,只不过循环的条件可以由自己的变量进行控制,或者说循环的条件是依赖这个方法执行的结果的。

主要是递归可以用在什么地方,怎么使用递归,以及递归的注意点是什么?这三个问题会比较的需要进行思考。

很简单的说,在平时的开发时候的,一般都思维都是很单一的,会使用哨兵(成员变量or局部变量)来实现循环体的条件。然后就是很粗暴的那种while(i==100),这种,链式的思维我感觉在算法中是很有困扰性的一件事情,所以在这个文章中需要掌握的还是 递归的思想以及在什么样的环境下使用。当然.....上面的方法和递归没区别。我更喜欢叫上面那种是控制循环,递归称为自然循环。

就在使用递归的时候主要是对问题的拆分:例如排序一个数组,可以拆分为奇数下标的左边比右边小。

然后是子问题和父问题的求解思路一样,或者说 除了数据规模不一样,其余都相同

最后是对终止递归的条件的设立。不然会一直循环下去。

写出递推公式,找到终止条件,这就是递归的核心

写个Demo好了,我也不知道咋说。

 

 就这种是肯定不行的。正确的应该是:

 

 一定要注意递归的深度问题

 

posted @ 2020-12-07 16:21  smartcat994  阅读(58)  评论(0编辑  收藏  举报