# python – An iterative algorithm for Fibonacci numbers

## python – An iterative algorithm for Fibonacci numbers

The problem is that your `return y` is within the loop of your function. So after the first iteration, it will already stop and return the first value: 1. Except when `n` is 0, in which case the function is made to return `0` itself, and in case `n` is 1, when the for loop will not iterate even once, and no `return` is being execute (hence the `None` return value).

To fix this, just move the `return y` outside of the loop.

### Alternative implementation

Following KebertX’s example, here is a solution I would personally make in Python. Of course, if you were to process many Fibonacci values, you might even want to combine those two solutions and create a cache for the numbers.

``````def f(n):
a, b = 0, 1
for i in range(0, n):
a, b = b, a + b
return a
``````

You are returning a value within a loop, so the function is exiting before the value of y ever gets to be any more than 1.

If I may suggest something shorter, and much more pythonful:

``````def fibs(n):
fibs = [0, 1, 1]
for f in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs[n]
``````

This will do exactly the same thing as your algorithm, but instead of creating three temporary variables, it just adds them into a list, and returns the nth fibonacci number by index.

#### python – An iterative algorithm for Fibonacci numbers

On fib(0), youre returning 0 because:

``````if (n == 0) {
return 0;
}
``````

On fib(1), youre returning 1 because:

``````y = 1
return y
``````

On fig(2), youre returning 1 because:

``````y = 1
return y
``````

…and so on. As long as `return y` is inside your loop, the function is ending on the first iteration of your for loop every time.

Heres a good solution that another user came up with:
How to write the Fibonacci Sequence in Python