递归思想类似与数学中的归纳法,即需要完成一个复杂函数的运算的时候,先算出他的上一步的结果然后继续运算。
复杂情况的递归建议转化为树的结构进行思考。
递归函数包括的内容:
1.函数的结束条件;
2.过程处理逻辑;
3.下一个递归函数的进行;
//leetcode22:括号的生成,递归回溯解题,index用来记录函数执行的过程
用index记录函数的执行过程
var index = 0;
var generate = function(n){
const res = [];
if(n<= 0){
console.log(res);
return res;
}
const dfs = function(path,open,close){
index++;
//记录每次进入递归函数的输入path
console.log("start:",path,open,close,index)
// if(open > n || close>open){
// return ;
// }
if(path.length == 2*n){
res.push(path);
return;
}
dfs(path+'(',open +1 ,close);
//验证什么时候开始执行递归函数的下一层逻辑
console.