Find n th fibonacci iteratively - illustrated walkthrough2. public static long FindNthFibonacciIterative(int n)
{
if (n == 0) return 0;
if (n == 1) return 1;
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
3. Let’s just get over with two special cases
when n == 0
[0]
[1]
[2]
[3]
[4]
[5]
[6]
0
1
?
?
?
?
?
if (n == 0) return 0;
if (n == 1) return 1;
Always return 0
when n == 1
[0]
[1]
[2]
[3]
[4]
[5]
[6]
0
1
?
?
?
?
?
if (n == 0) return 0;
if (n == 1) return 1;
Always return 1
5. when n == 6
0
fibNMinusTwo
1
?
?
?
fibNMinusOne
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
?
?
fibN
8. n == 6
i=2
0
fibNMinusTwo
1
0
?
?
fibNMinusOne
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
?
?
fibN
2 <= 6 is true
13. n == 6
i=3
1
fibNMinusTwo
1
1
?
?
fibNMinusOne
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
?
?
fibN
3 <= 6 is true
14. 3ed fib.
n == 6
i=3
1
+
fibNMinusTwo
1
2
?
?
fibNMinusOne
?
?
fibN
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
3nd Fibonacchi is 2
18. n == 6
i=4
1
fibNMinusTwo
2
2
?
?
fibNMinusOne
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
?
?
fibN
4 <= 6 is true
23. n == 6
i=5
2
fibNMinusTwo
3
3
?
?
fibNMinusOne
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
?
?
fibN
5 <= 6 is true
28. n == 6
i=6
3
fibNMinusTwo
5
5
?
?
fibNMinusOne
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
?
?
fibN
6 <= 6 is true
33. n == 6
i=7
5
fibNMinusTwo
8
8
?
?
fibNMinusOne
long fibNMinusTwo = 0;
long fibNMinusOne = 1;
long fibN = 0;
for (int i = 2; i <= n; ++i)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
?
?
fibN
7 <= 6 is false