递归本质分为几个步骤:
1.考虑清楚最简单的情况,也就是递归结束条件;
2.如何分解子问题
3.如何产生结果。
用语言表达就是:
if(simple case){
computer the simple solution;
}
else{
break the problem to the same form of subproblems by calling the function recursively;
reassmble the solutions to the whole solution;
}
注意每次的递归调用,计算机都会分配一个栈来存放当前状态,每一层调用的局部变量都是独立的。
经常应用递归的算法:
1.回文算法
2.二分查找
3.斐莫垃圾数列(哈哈,我记得是这样,英文忘记怎么拼写了)
递归分为多种
1.直接调用
2.交互调用(f调用g,g又调用f),其实就是对复杂的直接调用进行了封装,搞成另外一个函数。
用好递归的都是大神。。。。。。
递归思维需要整体思维。
出现bug 要问自己几个问题:
1.把简单情景解决正确了吗?
2.递归分解使问题简单了吗?
3.