Data structures and algorithms

 Write a recursive method called subsets to find every possible sub-list

of a given list. A sub-list of a list L contains 0 or more of L’s elements.

Your method should accept a list of strings as its parameter and print

every sub-list that could be created from elements of that list, one per

line. For example, if the list stores [Janet, Robert, Morgan, Char],

the output from your method would be:

[Janet, Robert, Morgan, Char]

[Janet, Robert, Morgan]

[Janet, Robert, Char]

[Janet, Robert]

[Janet, Morgan, Char]

[Janet, Morgan]

[Janet, Char]

[Janet]

[Robert, Morgan, Char]

[Robert, Morgan]

[Robert, Char]

[Robert]

[Morgan, Char]

[Morgan]

[Char]

[]

The order in which you show the sub-lists does not matter, and the order

of the elements of each sub-list also does not matter. The key thing is

that your method should produce the correct overall set of sub-lists as its

output. Notice that the empty list is considered one of these sub-lists.

You may assume that the list passed to your method is not null and that

the list contains no duplicates. Do not use any loops.