LardaX

RecursiveFibonacciWithDeque

Jan 24th, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.26 KB | None | 0 0
  1. import java.util.ArrayDeque;
  2. import java.util.Deque;
  3. import java.util.Scanner;
  4.  
  5. public class RecursiveFibonacciDeque {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.  
  9.         int fibonacciIndex = Integer.parseInt(scanner.nextLine()) + 1;
  10.  
  11.         Deque<Long> fibonacciNumbers = getFibonacciQueue(fibonacciIndex);
  12.  
  13.         Long fibonacciAtIndexGiven = fibonacciNumbers.pop();
  14.  
  15.         System.out.println(fibonacciAtIndexGiven);
  16.     }
  17.  
  18.     private static Deque<Long> getFibonacciQueue(int fibonacciIndex) {
  19.         if (fibonacciIndex == 1) {
  20.             Deque<Long> fibonacciNumbers = new ArrayDeque<>();
  21.             fibonacciNumbers.push(Long.valueOf(1));
  22.             return fibonacciNumbers;
  23.         } else {
  24.             Deque<Long> fibonacciNumbers = getFibonacciQueue(fibonacciIndex - 1);
  25.             Long number = fibonacciNumbers.poll();
  26.             Long previousNumber = fibonacciNumbers.poll();
  27.             if (previousNumber == null) {
  28.                 previousNumber = Long.valueOf(0);
  29.             }
  30.             Long nextNumber = number + previousNumber;
  31.             fibonacciNumbers.push(number);
  32.             fibonacciNumbers.push(nextNumber);
  33.  
  34.             return fibonacciNumbers;
  35.         }
  36.     }
  37. }
Add Comment
Please, Sign In to add comment