import java.util.Scanner; public class Fibonacci { public long[] memo; // pre: n>0 long fastFib(int n){ if(n<2) return n; if (memo[n]==0) memo[n] = fastFib(n-1)+fastFib(n-2); return memo[n]; } /** * * @param n >= 0 * @return Fibonacci(n) */ long fib(int n){ if (n<2) return n; else return fib(n-1)+fib(n-2); } /** * @param args */ public static void main(String[] args) { // TODO ask user for n, compute Fibonacci 0 to n, // stop when n<=0 // char c = 'm'; //if (Character.isLetter(c)) System.out.println("ok"); Scanner Input = new Scanner(System.in); Fibonacci f = new Fibonacci(); int n; do{ System.out.println("Enter n>0 (<=0 to finish)"); n = Input.nextInt(); if(n>0) for(int i=1; i<=n; i++){ f.memo = new long[n+1]; System.out.println("Fast Fibonacci(" +i+ ") = " + f.fastFib(i)); System.out.print("Fibonacci(" +i+ ") = "); System.out.println(f.fib(i)); } } while (n>0); System.out.println("bye Fibo"); } }