递归
我对递归的理解,是从递和归开始的。递是一个发送的过程,归是一个得到的过程。递归就是在不停的发送和得到,然后根据条件来控制发送和得到的结果。
最简单的递归不就是这样的吗。递归也就是一个深度的循环,只不过循环的条件可以由自己的变量进行控制,或者说循环的条件是依赖这个方法执行的结果的。
主要是递归可以用在什么地方,怎么使用递归,以及递归的注意点是什么?这三个问题会比较的需要进行思考。
很简单的说,在平时的开发时候的,一般都思维都是很单一的,会使用哨兵(成员变量or局部变量)来实现循环体的条件。然后就是很粗暴的那种while(i==100),这种,链式的思维我感觉在算法中是很有困扰性的一件事情,所以在这个文章中需要掌握的还是 递归的思想以及在什么样的环境下使用。当然.....上面的方法和递归没区别。我更喜欢叫上面那种是控制循环,递归称为自然循环。
就在使用递归的时候主要是对问题的拆分:例如排序一个数组,可以拆分为奇数下标的左边比右边小。
然后是子问题和父问题的求解思路一样,或者说 除了数据规模不一样,其余都相同
最后是对终止递归的条件的设立。不然会一直循环下去。
写出递推公式,找到终止条件,这就是递归的核心
写个Demo好了,我也不知道咋说。
就这种是肯定不行的。正确的应该是:
一定要注意递归的深度问题
smartcat.994