#!/usr/bin/env python __author__ = "bt3" def fib_generator(): a, b = 0, 1 while True: yield b a, b = b, a+b def fib(n): ''' >>> fib(2) 1 >>> fib(5) 5 >>> fib(7) 13 ''' if n < 3: return 1 a, b = 0, 1 count = 1 while count < n: count += 1 a, b = b, a+b return b def fib_rec(n): ''' >>> fib_rec(2) 1 >>> fib_rec(5) 5 >>> fib_rec(7) 13 ''' if n < 3: return 1 return fib_rec(n - 1) + fib_rec(n - 2) if __name__ == '__main__': import doctest doctest.testmod() fib = fib_generator() print(next(fib)) print(next(fib)) print(next(fib)) print(next(fib))