Write a Java program to complete the following task: Please note the
restrictions, especially in question c} The unit hypercube in the n-dimensional space is the set of all points (x1, x2, ,xn) in that space
such that its coordinates are restricted to be 0 5 x; 5 1 for i = 1. . n. This hypercube has
2ncorners. Each coordinate of a corner is either 0 or 1. Each edge of the hypercube connects a pair
of corners that differ in exactly one of their coordinates. A walk on the hypercube starts at some
corner and walks along a sequence of edges of the hypercube so that it visits each corner exactly
once. There are many such walks possible. The following figure shows an example for n = 3. The
edges of the (hyperlcube along the walk are thickened. 011 111 000 100 001 110 The problem: for any given 71, output the sequence of corners visited along a walk of the n-
dimensional hypercube. We want to study recursive and iterative solutions to this problem. In order to do that, design a
Hypercube class that (among possibly other members) includes the following: a) A nested class named Comer. An instance of this type represents a comer of the hypercube
and occupies 0(n) memory cells. b) A recursive method named recursiveWalkU to solve the above problem.
The parameters and local variables of this method can only be primitives or Comer types. c) An iterative method named iterativeWalk!) to solve the above problem using a single queue.
The elements of this queue, as well as the other local variables and method parameters, can
only be primitives or Corner types. (Note: We know that any recursive algorithm can be converted to an equivalent iterative one
by simulating a recursion stack. However, here you are forbidden to use a stack or any structure
that may act as one such as an array or a list. lava has a Queue interface, not a class. But it has
an ArrayDeque class that can do the job of a queue as well as other lists. You may either design
your own Queue class or use the queue methods in ArrayDeque. You are not allowed to use
the stack or other methods in ArrayDeque. In other words, use ArrayDeque only as a queue,
Le, a First-ln-First-Out list.) d) Explain the running times of your solutions in parts (b) and (c) in aZSolpdf. e) The main{) method of Hypercube class should test recursiveWalk and iterativeWalk for at
least the dimensions 71 = 3, 4, 5. Report the IIO results in a250l.pdf.