### Question:
TrampolineApp { public static Trampoline<Integer> loop(int times, int prod) { if (times == 0) { return Trampoline.done(prod); } else { return Trampoline.more(() -> loop(times - 1, prod * times)); } }  static void main(String[] args); static Trampoline<Integer> loop(int times, int prod);  }### Answer:
@Test public void testTrampolineWithFactorialFunction() { int result = TrampolineApp.loop(10, 1).result(); assertEquals("Be equal", 3628800, result); }
@Test public void testTrampolineWithFactorialFunction() { long result = TrampolineApp.loop(10, 1).result(); assertEquals("Be equal", 3628800, result); }
@Test public void testTrampolineWithFactorialFunction() throws IOException { int result = TrampolineApp.loop(10, 1).result(); assertEquals("Be equal", 3628800, result); }