You are on page 1of 2

# include <iostream>

using namespace std;

// f-> 0, 1, 1, 2, 3, 5, 8, 13
// n-> 0, 1, 2, 3, 4, 5, 6, 7

//ITERATIVE APPROACH --> Time - O(n); Space - O(1)

int ifib(int n){


int l = 0; int r = 1; int s;
for(int i = 2; i <= n; i++)
{
if(n<=1)
return n;
else
{
s = l + r;
l = r;
r = s;
}
}
return s;
}
// int main(){
// cout<<ifib(5)<<endl;
// cout<<ifib(7)<<endl;
// }

// RECURSIVE APPROACH --> Tme - O(n^2) assuming like f(n-1) +


f(n-1)

int rfib(int n){


if(n<=1)
return n;
else
return rfib(n-1) + rfib(n-2); //EXCESSIVE RECURSSION AS
F(n) is calculate multiple times for the same value
}
// int main(){
// cout<<rfib(5)<<endl;
// cout<<rfib(7)<<endl;
// }

//TO MAKE MORE EFFICIENT WE STORE THE VALUES INSTEAD OF


CALCULATING THEM AGAIN AND AGAIN FOR THE SAME ARGUMENT
//MEMOIZATION
int array[10];
int mfib(int n){
if (n<=1)
{
array[n] = n;

1
return n;
}
else
{
if(mfib(n - 2) == -1)
array[n-2] = mfib(n-2);
if(mfib(n - 1) == -1)
array[n-1] = mfib(n-1);
else
return mfib(n-2) + mfib(n-1);
}
}
int main(){
for (int i = 0; i< 10; i++)
array[i] = -1;
cout<<mfib(8)<<endl;
}

You might also like