top down approach
//===========Top_down implementation (just recursive)
fib(int n){
	if(n<2){
	return n;
	return fib(n-1) + fib(n-2);
	}
}
//===========Top_down implementation (recursive + memoization)
fib(int n){
	if(n<2){
	return n;
	if(cache[n] is defined)
		return cache[n];
	return cache[n]=fib(n-1) + fib(n-2);
	}
}
//===========Top_down implementation(avoid recursion , only tabulation)
fib(int n){
	int cache[] = new int [n+1];
	//base case;
	cache[0]=1;
	cache[1]=1;
	for(int i=2; i<=n; i++){
	cache[1] = cache[i-1] +cache[i -2];
	}
	return cache[n];
}
