📖 Scenario: You are working on a shopping app where customers can select different items with prices. You want to find all possible combinations of items that add up exactly to a gift card value.
🎯 Goal: Build a program that finds all combinations of numbers from a given list that sum up to a target value k.
📋 What You'll Learn
Create an array called numbers with the exact values [2, 3, 6, 7].
Create a variable called target and set it to 7.
Write a function called findCombinations that uses recursion to find all combinations of numbers that sum to target.
Print the result array called result which contains all valid combinations.
💡 Why This Matters
🌍 Real World
Finding combinations of items that fit a budget or target sum is common in shopping apps, budgeting tools, and game design.
💼 Career
Understanding recursion and backtracking is important for solving complex algorithm problems in software engineering roles.
Progress0 / 4 steps
1
Create the numbers array
Create an array called numbers with these exact values: [2, 3, 6, 7].
DSA Javascript
Hint
Use const numbers = [2, 3, 6, 7]; to create the array.
2
Set the target sum
Create a variable called target and set it to the number 7.
DSA Javascript
Hint
Use const target = 7; to set the target sum.
3
Write the recursive function to find combinations
Write a function called findCombinations that takes start, currentSum, and currentCombo as parameters. Use recursion to find all combinations of numbers from numbers starting at index start that sum to target. Store valid combinations in an array called result.
DSA Javascript
Hint
Use a for loop starting from start to try each number. Add the number to currentCombo, call findCombinations recursively, then remove the number to backtrack.
4
Print the result array
Print the result array to display all combinations that sum to target.
DSA Javascript
Hint
Use console.log(result); to print the array of combinations.
Practice
(1/5)
1. What does the problem "Generate All Combinations Sum K" ask you to find?
easy
A. All unique combinations of numbers that add up to K
B. The largest number less than K
C. The count of numbers greater than K
D. The product of all numbers up to K
Solution
Step 1: Understand the problem goal
The problem asks to find all unique sets of numbers that sum exactly to K.
Step 2: Clarify what combinations mean
Combinations mean groups of numbers without regard to order, all adding to K.
Final Answer:
All unique combinations of numbers that add up to K -> Option A
Quick Check:
Combinations sum to K = All unique combinations of numbers that add up to K [OK]
Hint: Focus on sums equal to K, not counts or products [OK]
Common Mistakes:
Confusing combinations with permutations
Looking for counts instead of actual combinations
Trying to find products instead of sums
2. Which of the following is the correct way to start a recursive function in JavaScript to generate combinations summing to K?
easy
A. function findCombos() { return; }
B. function findCombos(nums, target) { return nums + target; }
C. function findCombos(nums, target, start, path, result) { ... }
D. function findCombos(nums) { console.log(target); }
Solution
Step 1: Identify correct recursive function signature
The function needs parameters for numbers, target sum, start index, current path, and result storage.
Step 2: Check options for these parameters
Only function findCombos(nums, target, start, path, result) { ... } includes all necessary parameters for recursion and backtracking.
Final Answer:
function findCombos(nums, target, start, path, result) { ... } -> Option C
Quick Check:
Recursive function with all params = function findCombos(nums, target, start, path, result) { ... } [OK]
Hint: Include start index and path for backtracking recursion [OK]
Common Mistakes:
Missing parameters needed for recursion
Returning wrong values instead of building combinations
Not including start index to avoid duplicates
3. What is the output of the following code snippet?
function combinationSum(nums, target) {
const result = [];
function backtrack(start, path, sum) {
if (sum === target) {
result.push([...path]);
return;
}
if (sum > target) return;
for (let i = start; i < nums.length; i++) {
path.push(nums[i]);
backtrack(i + 1, path, sum + nums[i]);
path.pop();
}
}
backtrack(0, [], 0);
return result;
}
console.log(combinationSum([2,3,6,7], 7));
medium
A. [[7]]
B. [[2,3,6,7]]
C. [[2,3,7]]
D. [[2,2,3]]
Solution
Step 1: Understand the code logic
The function finds combinations of numbers from the array that sum to 7 without reuse (i + 1).
Step 2: Trace the combinations
Only 7 alone sums to 7; others like 2+3=5, 2+3+6=11 exceed or don't match target.
Final Answer:
[[7]] -> Option A
Quick Check:
Only [7] sums to 7 without repeats = [[7]] [OK]
Hint: Check sum and index increment to avoid reuse [OK]
Common Mistakes:
Assuming numbers can be reused multiple times
Including combinations that exceed target
Not copying path array before pushing
4. Identify the bug in this code snippet for generating combinations summing to K:
function findCombos(nums, target) {
const result = [];
function backtrack(start, path, sum) {
if (sum === target) {
result.push(path);
return;
}
if (sum > target) return;
for (let i = start; i < nums.length; i++) {
path.push(nums[i]);
backtrack(i + 1, path, sum + nums[i]);
path.pop();
}
}
backtrack(0, [], 0);
return result;
}
medium
A. The base case sum === target is missing
B. The path array is pushed directly without copying, causing reference issues
C. The loop should start from 0 instead of start
D. The function does not return any result
Solution
Step 1: Check how results are stored
The code pushes 'path' directly, which is a reference and will change later.
Step 2: Identify correct way to store combinations
Must push a copy of path (e.g., [...path]) to save current state.
Final Answer:
The path array is pushed directly without copying, causing reference issues -> Option B
Quick Check:
Push copy of path, not reference = The path array is pushed directly without copying, causing reference issues [OK]
Hint: Always push a copy of path array to result [OK]
Common Mistakes:
Pushing path reference instead of copy
Incorrect loop start index causing duplicates
Missing base case for sum equal to target
5. Given the array [1, 2, 3, 4] and target sum 5, which of the following is the correct set of all unique combinations that sum to 5, assuming numbers can be used only once?
hard
A. [[1,2,2]]
B. [[1,1,3],[2,3]]
C. [[5]]
D. [[1,4],[2,3]]
Solution
Step 1: List all combinations without reuse that sum to 5
Possible pairs: 1+4=5, 2+3=5; triples or singles don't sum to 5 without reuse.
Step 2: Verify options against these combinations
[[1,4],[2,3]] matches these pairs exactly; others include duplicates or invalid sums.
Final Answer:
[[1,4],[2,3]] -> Option D
Quick Check:
Unique pairs summing to 5 = [[1,4],[2,3]] [OK]
Hint: Sum pairs without reuse to find valid combos [OK]
Common Mistakes:
Including repeated numbers when only single use allowed
Assuming single number 5 exists in array
Counting invalid sums or duplicates
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.