自己调用自己。。
系统内部是怎么实现的
看下引例
//返回数组的最大值 -- 递归方式
public static int getMax(int[] arr, int L, int R) {
if (L == R) { //明确终止条件
return arr[L];
}
int mid = (L + R) / 2;
int maxLeft = getMax(arr, L, mid);
int maxRight = getMax(arr, mid + 1, R);
return Math.max(maxLeft, maxRight);
}
public static void main(String args[]) {
int[] arr = {4, 3, 2, 1};
System.out.println(getMax(arr, 0, arr.length - 1));
}
//4
先找左边的最大值,再看右边的最大值,取最大的,这是一个分治的思路
递归就是不断将子问题简化简化
最后找到一个终止的条件
[4, 3, 2, 1]
递归函数就是系统再帮你压栈,怎么去理解
手写。。灵魂画手再现。。
任何的递归都可以写成非递归