Khai báo hàm insertAllPositions nhận hai tham số: phần tử x và mảng arr. Trả về mảng các mảng, mỗi mảng tương ứng arr với x chèn ở một vị trí khả thi.
Nếu arr độ dài N, kết quả là mảng N+1 mảng.
Ví dụ: insertAllPositions(10, [1,2,3]) =>
const output = [ [10,1,2,3], [1,10,2,3], [1,2,10,3], [1,2,3,10] ];
Yêu cầu viết hàm thuần túy bằng đệ quy.
Ví dụ
Dưới đây là đoạn code:
const arr = [1, 2, 3];
const num = 10;
const insertAllPositions = (num, arr) => {
return arr.length ?
[[num, ...arr]]
.concat(insertAllPositions(num, arr.slice(1))
.map(el => {
return [arr[0]].concat(el);
})) :
[[num]]
};
console.log(insertAllPositions(num, arr));Kết quả
Đoạn code sẽ in ra console:
[ [ 10, 1, 2, 3 ], [ 1, 10, 2, 3 ], [ 1, 2, 10, 3 ], [ 1, 2, 3, 10 ] ]