Chúng tôi bắt buộc phải khai báo một hàm, giả sử như insertAllPositions, có hai đối số -
một phần tử, x và một mảng, arr. Các hàm phải trả về một mảng các mảng, với mỗi mảng tương ứng với arr với x được chèn vào một vị trí có thể.
Nghĩa là, nếu arr có độ dài N, thì kết quả là một mảng có N + 1 mảng -
Ví dụ:kết quả của insertAllPositions (10, [1,2,3]) phải là -
const output =[[10,1,2,3], [1,10,2,3], [1,2,10,3], [1,2,3,10]];Chúng tôi bắt buộc phải viết hàm này hoàn toàn bằng cách sử dụng đệ quy.
Ví dụ
Sau đây là mã -
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));Đầu ra
Điều này sẽ tạo ra kết quả sau trên bảng điều khiển -
[[10, 1, 2, 3], [1, 10, 2, 3], [1, 2, 10, 3], [1, 2, 3, 10]]