public class recursion {
public void recur(int level,int param) {
//terminator 终结条件
if(level > level) {
//process result 处理结果
return;
}
//process current logic 当前逻辑主过程
Process(level,param);
//drill down 向下递归
recur(level;level+1,newParam);
//restore current status 清除本层次递归的状态
}
}
用一个leetcode递归来表示一下这个模板`
22. 括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
class Solution {
private List<String> list;
public List<String> generateParenthesis(int n) {
list = new LinkedList<String>();
if(n != 0) recursion(0, 0, n, "");
return list;
}
public void recursion(int left,int right,int n,String s) {
if(left == n && right == n) { //终结条件
list.add(s);
return;
}
//if(left<n) s += "("; 这是处理过程,但我合并到了下面
if(left < n) recursion(left+1, right, n, s+"("); //这里将处理过程和向下递归结合了
if(left > right) recursion(left, right+1, n, s+")");
//本层没有状态,所以不用清除
}
}