From bde83ba4c1ff6b63fea9aa66a896b0955270696a Mon Sep 17 00:00:00 2001 From: Cecili Reid Date: Sat, 5 Jun 2021 13:09:41 -0400 Subject: [PATCH] Add more endpoints for fibonacci sequence --- .../fibonacci/FibonacciController.java | 59 +++++++++++++++++-- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/cecilireid/fibonacci/FibonacciController.java b/src/main/java/com/cecilireid/fibonacci/FibonacciController.java index 8877a95..366eafc 100644 --- a/src/main/java/com/cecilireid/fibonacci/FibonacciController.java +++ b/src/main/java/com/cecilireid/fibonacci/FibonacciController.java @@ -3,9 +3,14 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + @RestController @RequestMapping("fibonacci") public class FibonacciController { + /** * Determine the n-th fibonacci number * @@ -13,19 +18,65 @@ public class FibonacciController { * @return the n-th fibonacci number in the sequence */ @GetMapping("findNumber") - public ResponseEntity findFibonacciNumber(@RequestParam int n) - { + public ResponseEntity findFibonacciNumber(@RequestParam int n) { return ResponseEntity.ok(fibonacci(n)); } + + + /** + * Store the first n-th numbers in the fibonacci sequence in a text file. + * + * @param n position in fibonacci sequence + * @return name of the file created + */ + @PostMapping("createSequence") + public ResponseEntity generateFibonacciSequence(@RequestParam int n) { + List sequence = getSequence(n); + return ResponseEntity.ok(storeSequence(sequence)); + } + + /** + * Generate fibonacci sequence without using recursion + * + * @param n number of numbers that should be included in the fibonacci sequence + * @return list of integers with fibonacci sequence + */ + private List getSequence(int n) { + List sequence = new ArrayList<>(); + sequence.add(0); + int prev = 0; + int curr = 1; + int index = 1; + while (index <= n) { + sequence.add(curr); + int next = prev + curr; + prev = curr; + curr = next; + index++; + } + return sequence; + } + + /** + * Save the fibonacci sequence in a txt file + * + * @param sequence list of ints in the fibonacci sequence + * @return String name of the file saved + */ + private String storeSequence(List sequence) { + String name = "fibonacci.txt"; + // TODO + return name; + } + /** * Recursively find the Fibonacci number at the position in the sequence * * @param position requested position of fibonacci sequence (i.e. 8th number in sequence) * @return fibonacci number at position (i.e. 21) */ - private int fibonacci(int position) - { + private int fibonacci(int position) { if (position <= 1) { return position; }