Tail Recursion Assignment

From CSE425S Wiki
Jump to navigation Jump to search

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 Java.png
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 Junit.png
package: tail.assignment
source folder: src/test/java