题目
给定一个数组arr
,从中选出n
个元素,要求给出所有组合的情况(结果在一个数组中)
例子:
const arr = ['1', '2', '3'];
const n = 2;
const result = getCombine(arr, b);
console.log(result);
// ['12', '13', '23' ]
分析
实际上就是一个求排列组合的问题。对上面的例子进行分析
(1)首先arr
是['1', '2', '3']
,n
是2
,先取出数组中第一项1
,然后需要从剩下的两个元素中取一个
(2)此时可以将arr
看做[ '2', '3']
,n
是1
,在从中任取一项就行了
(3)此时结果为['12', '13']
(4)返回第一步,取出数组中第一项1
改为取第二项2
,然后从剩下的元素中取
(5)重复进行上面的步骤
很明显,分析后发现这是一个递归的过