递归的思维
递归之切蛋糕思维:
可以说是老板思维,假如你是老板,你自己做头一部分,剩下的交给下面的人来做。
Case1 数组的求和
private static int sum(int[]arr, int begin) {
//边界值
if (begin == arr.length - 1) {
return arr[begin];
}
return arr[begin] + sum(arr,begin+1);
}
Case2 翻转字符串
private static String reserve(String src,int end) {
//边界值
if (end == 0) {
return "" + src.charAt(end);
}
//从最后一位开始
return src.charAt(end)+reserve(src, end-1);
}
这里边界值自己可以自己推理一下,像Case1加到最后一个,,如果再加,数组下标越界。
多分支递归
——直接量+小规模子问题
——多个小规模子问题
Case3 斐波那契序列
不懂斐波那序列去度娘一下,很简单
private static int fib(int n) {
if(n==1 || n == 2) return 1;
return fib(n-1)+fib(n-2);
}
这里可以说下递归解答树
像阶乘就是从最后一个1!开始算起,然后2!。。。
但是斐波那契序列属于先往下最横,他是这样的先是fib(5)要求fib(4),fib(3),再是fib(4)要求fib(3),fib(2)。。。一直递归到边界,这是深度搜索的理论。以后我还会在写到。大家可以先理解一下。
今天先简单记到这里,明天继续大篇更新!!!