JavaScript 从一个数组中拿出N个数(可放回),问共有多少种
今天在写一道leetcode的时候遇到了无重复放回的遍历问题,用递归解决如下:
function p(arr, N, ans){
if(N === 0) return ans;
if(ans.length === 0) return(p(arr, N-1, arr.slice(0)))
let res = []
for(let c = 0; c < arr.length; c++){
let item = arr[c];
ans.forEach(element => {
let el = element + item;
res.push(el)
});
}
return p(arr, N-1, res)
}
console.log(p(['1', '2'], 4, [])) // 输出为
[
'1111', '2111', '1211',
'2211', '1121', '2121',
'1221', '2221', '1112',
'2112', '1212', '2212',
'1122', '2122', '1222',
'2222'
]
浙公网安备 33010602011771号