Write a recursive method named Travel
that accepts integers x and y as parameters and uses recursive backtracking to print all solutions for Traveling in the 2-D plane from (0, 0) to (x, y) by repeatedly using one of three moves:
- East (E): move right 1 (increase x)
- North (N): move up 1 (increase y)
- Northeast (NE): move up 1 and right 1 (increase both x and y)
The following diagram shows one such path to the point (5, 3).
You may assume that the x/y values passed are non-negative. If x and y are both 0, print a blank line.
The table below shows several calls to your method and the lines of output. Your lines can appear in any order; our output shown tries the possibilities in the order listed above: East, then North, then Northeast.
Call |
Output |
Call |
Output |
Travel(1, 2);
|
E N N
N E N
N N E
N NE
NE N
|
Travel(2, 2);
|
E E N N
E N E N
E N N E
E N NE
E NE N
N E E N
N E N E
N E NE
N N E E
N NE E
NE E N
NE N E
NE NE
|
Travel(2, 1);
|
E E N
E N E
E NE
N E E
NE E
|
Travel(1, 1);
|
E N
N E
NE
|
Hint: It may help to define a private helper method that accepts different parameters than the original method. In particular, consider building up a set of characters as a string for eventual printing. Do not use any loops in solving this problem.