首页 新闻 赞助 找找看

在参数传递时使用自加++运算

0
悬赏园豆:5 [已解决问题] 解决于 2014-02-21 03:32

今天写代码在参数传递时用自加++运算,结果不正确,改为+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
        }
    }
}
Joyce-Lee的主页 Joyce-Lee | 初学一级 | 园豆:179
提问于:2014-02-20 15:59
< >
分享
最佳答案
0

使用++lnum后,导致lnum自增长,导致下面的if判断出错了,再减一应该就对了

generate(ret, str+"(", ++lnum, rnum, n ); // 这里不可以用 ++lnum

if(lnum-1>rnum){

generate(ret, str+")", lnum-1, ++rnum, n); // 这里不可以用 ++rnum

}

收获园豆:5
sam.c | 初学一级 |园豆:148 | 2014-02-20 17:00
其他回答(1)
0

使用 ++lnum 时, lnum 值会变,变成lnum.

用1+lnum时,lunm是不变的

jerry128 | 园豆:31 (初学一级) | 2014-02-20 18:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册