递归学习
递归、循环的区别:
循环:循环嵌套层数由代码结构决定,维度不可变。
递归:能产生循环嵌套,可以扩展循环层数。
举例:遍历所有组合—— C6取3#
[1,2,3] [1,2,4] [1,2,5] [1,2,6] [1,3,4] [1,3,5] [1,3,6] [1,4,5] [1,4,6] [1,5,6]
[2,3,4] [2,3,5] [2,3,6] [2,4,5] [2,4,6] [2,5,6]
[3,4,5] [3,4,6] [3,5,6]
[4,5,6]
- 循环:
1 | for(int i=1;i<=4;i++) |
每个数组有三个元素,用三层for循环。
- 递归:
1 | //计算C6取3 |
如果遍历C6取4呢?
- 循环:加一层for循环
1 | for(int i=1;i<=3;i++) |
- 递归:只需将入口参数totle由3修改为4即可:
solve(0,4,1,6);
更一般地,如果遍历Cn取k
递归:n和k为变量,递归依然只需更改入口参数:
solve(0,k ,1, n);循环:呵呵
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xiaobai050!