summaryrefslogtreecommitdiff
path: root/AlgoDesignAndTechniqueEdxJava/sources/Fibonacci.java
blob: 53388fea729581ed928fef086be460ebbd15b3de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.Scanner;

public class Fibonacci {
	public static long fib_naive(int n) {
		if (n <= 1)
			return n;

		return fib_naive(n - 1) + fib_naive(n - 2);
	}

	public static long fib_optimized1(int n) {
		if (n <= 1)
			return (long) n;
		final long[] fibArray = new long[n+1];
		fibArray[0] = 0;
		fibArray[1] = 1;
		for (int i = 2; i < n+1; i++) {
			fibArray[i] = fibArray[i - 1] + fibArray[i - 2];
		}
		return fibArray[n];
	}

	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();

		System.out.println(fib_optimized1(n));
	}

}