Find n th fibonacci iteratively - illustrated walkthrough

35
Find n-th Fibonacci iteratively Illustrated walk through

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.cs

Transcript of Find n th fibonacci iteratively - illustrated walkthrough

Page 1: Find n th fibonacci iteratively - illustrated walkthrough

Find n-th Fibonacci iteratively

Illustrated walk through

Page 2: Find n th fibonacci iteratively - illustrated walkthrough

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;}

Page 3: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 4: Find n th fibonacci iteratively - illustrated walkthrough

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]

Page 5: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 6: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 7: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 8: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 9: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 10: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 11: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 12: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 13: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 14: Find n th fibonacci iteratively - illustrated walkthrough

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.

Page 15: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 16: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 17: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 18: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 19: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 20: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 21: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 22: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 23: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 24: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 25: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 26: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 27: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 28: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 29: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 30: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 31: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 32: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 33: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 34: Find n th fibonacci iteratively - illustrated walkthrough

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

Page 35: Find n th fibonacci iteratively - illustrated walkthrough

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