summaryrefslogtreecommitdiff
path: root/AlgoDesignAndTechniqueEdxJava/sources/Fibonacci.java
blob: 94217ed6b6738424cd63ee0b504dd42b7dd631ea (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 i) {
		if (i <= 1)
			return (long) i;
		final long[] fibArray = new long[i+1];
		fibArray[0] = 0;
		fibArray[1] = 1;
		for (int j = 2; j < i+1; j++) {
			fibArray[j] = fibArray[j - 1] + fibArray[j - 2];
		}
		return fibArray[i];
	}

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

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

}