Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Write a recursive method knapsack that takes a list of allowed integer numbers and a target sum and prints all of the possible choices of

Write a recursive method knapsack that takes a list of allowed integer numbers and a target sum and prints all of the possible choices of numbers that sum to the target. Assume the numbers are all positive.

For example, if list were [1, 2, 3, 5], then knapsack(list, 3) would output:

[1, 1, 1] [1, 2] [2, 1] [3]

Do not make changes to the list of numbers.

Please help! Code I have so far have error "void" type not allowed.

public class Knapsack { public static void knapsack(List numbers, int sum) { kanpsack(numbers, sum, 0); }

private static void kanpsack(List numbers, int sum, int sumSoFar){ if(sumSoFar == sum){ System.out.println(numbers); } else{ for(int eachNum : numbers){ sumSoFar = eachNum + kanpsack(numbers, sum, sumSoFar); } } }

public static void main(String[] args) { knapsack(List.of(1, 2, 3, 5), 3); knapsack(List.of(1, 3, 5, 7), 8); } }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions