Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ชุดค่าผสมใด ๆ ที่เป็นไปได้เพื่อเพิ่มเป้าหมายใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน 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