Write a recursive subroutine 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 (x As increase)
- North (N): move up 1 (y As increase)
- 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 subroutine 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 subroutine that accepts different parameters than the original subroutine. In particular, consider building up a set of characters as a String for eventual printing. Do not use any loops in solving this problem.