Motivation
Sometimes we choose tail recursion for the performance improvement which can be achieved by a language implementation optimization. Sometimes the tail recursive version is the cleaner implementation. Reverse is an example where the right way to build it is tail recursive.
Code To Implement
Reverse
class: |
Reverse.java |
|
methods: |
reverse |
package: |
tail.assignment |
source folder: |
src/main/java |
public static <E> ImmutableList<E> reverse(ImmutableList<E> original)
You will want to build a private static helper method which is tail recursive for reverse
to invoke.
Test
class: |
ReverseTestSuite.java |
|
package: |
tail.assignment |
source folder: |
src/test/java |