老师,这一块儿我没有看懂。我按照1234里选两个的条件没看懂

来源:7-7 递归控制_例题列出所有组合

慕仰7036876

2020-08-07

    //select element 0
    selected.add(data.get(0));
    combinations(selected, data.subList(1, data.size()), n - 1);
    //un-select element 0
    selected.remove(selected.size() - 1);
    combinations(selected, data.subList(1, data.size()), n);
    就是这两句话,select element 0 我看懂了,也能推出1 2、1 3、1 4
    但是在un-select中,运行完combinations语句后,我的推断是select变为1(select语句执行后是1、2),再次将其代入到方法中。但是这回也是要从上到下依次执行程序。那不也就是说还要再次运行select element0语句将2加回去,又没有if这种选择语句,肯定要先执行select语句,再执行un-select语句呀,这不就使得select回到原来的样子(原来是1、2,然后减2再加上2)?我感觉这成死循环了呀?
写回答

1回答

慕仰7036876

提问者

2020-08-07

老师,我知道了,我把它看成循环了,忘了递归的特性

0
0

Google面试官亲授-Java面试新手尊享课

为面试新手量身定制的Java面试尊享课,解锁“鲤鱼跃龙门”的妙招

2853 学习 · 180 问题

查看课程