find n th fibonacci iteratively - illustrated walkthrough
DESCRIPTION
A step-by-step illustration of Find n-th Fibonacci function to help you walk through a series of operations. Illustration is accompanied by actual code with bold line indicating the current operation. https://github.com/yoshiwatanabe/Algorithms/blob/master/Finding/Fibonacci.csTRANSCRIPT
Find n-th Fibonacci iteratively
Illustrated walk through
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;}
0 1 ? ? ? ? ?
[0] [1] [2] [3] [4] [5] [6]
if (n == 0) return 0;if (n == 1) return 1;
when n == 0
0 1 ? ? ? ? ?
[0] [1] [2] [3] [4] [5] [6]
if (n == 0) return 0;if (n == 1) return 1;
when n == 1
Let’s just get over with two special cases
Always return 0
Always return 1
0 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;
fibNMinusTwo fibNMinusOne fibN
[0] [1] [2] [3] [4] [5] [6]
0 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;
fibNMinusTwo fibNMinusOne fibN
when n == 6
0 1 0 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
0 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;
fibNMinusTwo fibNMinusOne fibN
n == 6
i = 2
0
0 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;
fibNMinusTwo fibNMinusOne fibN
2 <= 6 is true0
i = 2
n == 6
0 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;
fibNMinusTwo fibNMinusOne fibN
1+
i = 2
n == 6
2nd Fibonacchi is 1
1 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;
fibNMinusTwo fibNMinusOne fibN
1
i = 2
n == 6
1 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;
fibNMinusTwo fibNMinusOne fibN
1
i = 2
n == 6
1 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;
fibNMinusTwo fibNMinusOne fibN
1
i = 3
n == 6
1 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;
fibNMinusTwo fibNMinusOne fibN
1 3 <= 6 is true
i = 3
n == 6
1 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;
fibNMinusTwo fibNMinusOne fibN
2+
i = 3
n == 6
3nd Fibonacchi is 2
3ed fib.
1 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;
fibNMinusTwo fibNMinusOne fibN
2
i = 3
n == 6
1 2 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
2
i = 3
n == 6
1 2 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
2
i = 4n == 6
1 2 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
2
i = 4
n == 6
4 <= 6 is true
1 2 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
3
i = 4
n == 6
+
4-th Fibonacchi is 3
2 2 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
3
i = 4
n == 6
2 3 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
3
i = 4
n == 6
2 3 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
3
i = 5n == 6
2 3 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
3
i = 5
n == 6
5 <= 6 is true
2 3 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
5
i = 5
n == 6
+
5-th Fibonacchi is 5
3 3 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
5
i = 5
n == 6
3 5 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
5
i = 5
n == 6
3 5 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
5
i = 6n == 6
3 5 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
5
i = 6
n == 6
6 <= 6 is true
3 5 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
8
i = 6
n == 6
+
6-th Fibonacchi is 8
5 5 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
8
i = 6
n == 6
5 8 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
8
i = 6
n == 6
5 8 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
8
i = 7
n == 6
5 8 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
8
i = 7
n == 6
7 <= 6 is false
5 8 ? ? ? ?
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;
fibNMinusTwo fibNMinusOne fibN
8
i = 7
n == 6
Exit the for loop
5 8 ? ? ? ?
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
i = 7
n == 6
Return fibN = 8
fibNMinusTwo fibNMinusOne
6-th Fibonacchi is 8