ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มที่ไม่ซ้ำกัน arr เป็นอาร์กิวเมนต์แรก และผลรวมเป้าหมายเป็นอาร์กิวเมนต์ที่สอง
ฟังก์ชันของเราควรนับจำนวนของคู่ทั้งหมด (โดยอนุญาตให้ทำซ้ำได้) ที่สามารถรวมกันเป็นยอดรวมเป้าหมายและส่งคืนจำนวนนั้นได้
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr =[1, 2, 3];const target =4;
จากนั้นผลลัพธ์ควรเป็น −
คอนสตเอาท์ =7;
คำอธิบายผลลัพธ์:
เพราะวิธีผสมที่เป็นไปได้คือ −
(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)ก่อน>ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
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]; }; ให้ res =0; สำหรับ (ให้ i =0; i=nums[i]){ res +=sumUpto(nums, target - nums[i], map); }; }; แผนที่[เป้าหมาย] =res; return res;};console.log(sumUpto(arr, target)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
7