Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng các số nguyên duy nhất, arr, làm đối số đầu tiên và tổng mục tiêu làm đối số thứ hai.
Hàm của chúng ta sẽ đếm số lượng tất cả các cặp (cho phép lặp lại) có thể cộng lại thành tổng mục tiêu và trả về số lượng đó.
Ví dụ:nếu đầu vào của hàm là -
const arr =[1, 2, 3]; const target =4;
Sau đó, kết quả đầu ra phải là -
const output =7;
Giải thích đầu ra:
Bởi vì, các cách kết hợp có thể có là -
(1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)Ví dụ
Mã cho điều này sẽ là -
const arr =[1, 2, 3]; const target =4; const sumUpto =(nums =[], target =1, map ={}) => {if (target ===0) {return 1; }; if (typeof map [target]! ="undefined") {return map [target]; }; cho res =0; for (let i =0; i=nums [i]) {res + =sumUpto (nums, target - nums [i], map); }; }; bản đồ [target] =res; return res;}; console.log (sumUpto (arr, target)); Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
7