fix checkstyle errors

This commit is contained in:
tigraboris 2018-01-20 21:42:14 +03:00
parent f7825f6c99
commit 4c4cbd41cf
3 changed files with 91 additions and 82 deletions

View File

@ -2,14 +2,16 @@ package com.iluwatar.trampoline;
import java.util.stream.Stream;
/**<p>Trampoline pattern allows to define recursive algorithms by iterative loop </p>
/**
* <p>Trampoline pattern allows to define recursive algorithms by iterative loop </p>
* <p>When get is called on the returned Trampoline, internally it will iterate calling jump
on the returned Trampoline as long as the concrete instance returned is {@link #more(Trampoline)},
stopping once the returned instance is {@link #done(Object)}.</p>
<p>Essential we convert looping via recursion into iteration,
the key enabling mechanism is the fact that {@link #more(Trampoline)} is a lazy operation.</p>
* on the returned Trampoline as long as the concrete instance returned is {@link #more(Trampoline)},
* stopping once the returned instance is {@link #done(Object)}.</p>
* <p>Essential we convert looping via recursion into iteration,
* the key enabling mechanism is the fact that {@link #more(Trampoline)} is a lazy operation.</p>
*
* @param <T> is type for returning result.
*/
public interface Trampoline<T> {
T get();
@ -28,7 +30,6 @@ public interface Trampoline<T> {
/**
* @return true if complete
*
*/
default boolean complete() {
return true;

View File

@ -31,9 +31,12 @@ import lombok.extern.slf4j.Slf4j;
* <p>it is possible to implement algorithms recursively in Java without blowing the stack
* and to interleave the execution of functions without hard coding them together or even using threads.</p>
*/
@Slf4j
public class TrampolineApp {
/**
* Main program for showing pattern. It does loop with factorial function.
* */
public static void main(String[] args) {
log.info("start pattern");
Integer result = loop(10, 1).result();
@ -43,12 +46,13 @@ public class TrampolineApp {
/**
* Manager for pattern. Define it with a factorial function.
* */
*/
public static Trampoline<Integer> loop(int times, int prod) {
if (times == 0)
if (times == 0) {
return Trampoline.done(prod);
else
} else {
return Trampoline.more(() -> loop(times - 1, prod * times));
}
}
}

View File

@ -6,6 +6,10 @@ import java.io.IOException;
import static org.junit.Assert.*;
/**
* Test for trampoline pattern.
* */
public class TrampolineAppTest {