老师,这一块儿我没有看懂。我按照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
老师,我知道了,我把它看成循环了,忘了递归的特性
00
相似问题