递归的核心思想是将问题拆分为相同思路的子问题。
举一个简单的例子:
我们在进行二分查找过程中,首先我们需要将数组进行分割,分成两部分。
左子集 | 右子集 |
我们将非降序数组分为左子集以及右子集两个集合,那如果这个元素是小于中间值。
那我们将对左子集再次进行二分查找。
此时,我们便将对数组的处理,转化为对子数组的处理。
由此我们可以得到如下所示:
左子集的左子集 | 左子集的右子集 | 右子集 |
因此我们还是一样的思路去处理问题,但是我们针对的变量在减少。
这就是递归的思路。
深入到最里层为递,从最里层出来叫做归。
举例:--阶乘
递推关系
public int f(int n){
if(n==1){
return 1;
}
return n*f(n-1);
}