今天写代码在参数传递时用自加++运算,结果不正确,改为+1结果正确,百度不到结果,求高手解答(附代码如下,问题部分已用注释标出)
public class Solution { public ArrayList<String> generateParenthesis(int n) { ArrayList<String> res = new ArrayList<String>(); generate(res, "", 0, 0, n); return res; } public void generate(ArrayList<String> ret, String str, int lnum, int rnum, int n){ if(lnum == n){ for(int i = 0; i<n-rnum; i++){ str += ")"; } ret.add(str); return; } generate(ret, str+"(", 1+lnum, rnum, n ); // 这里不可以用 ++lnum if(lnum>rnum){ generate(ret, str+")", lnum, 1+rnum, n); // 这里不可以用 ++rnum } } }
使用++lnum后,导致lnum自增长,导致下面的if判断出错了,再减一应该就对了
generate(ret, str+"(", ++lnum, rnum, n ); // 这里不可以用 ++lnum
if(lnum-1>rnum){
generate(ret, str+")", lnum-1, ++rnum, n); // 这里不可以用 ++rnum
}
使用 ++lnum 时, lnum 值会变,变成lnum.
用1+lnum时,lunm是不变的