# -*- coding: utf-8 -*- """ Created on Mon Nov 9 14:23:29 2015 fibonaci @author: md316445 """ import time import pylab as py def mczas(fun, n, *args): '''Wykonuje funkcję fun, n razy, z pewnymi argumentami, zwraca średni czas wykonania funkcji''' t0 = time.clock() for i in range(n): fun(*args) return (time.clock()-t0)/n def fib_iter(n): ostat = 1 przedos = 0 if n>1: for i in range(2,n+1): ostat, przedos = ostat+przedos, ostat return ostat elif n==0: return 0 elif n==1: return 1 def fib_rek(n): if n>1: return fib_rek(n-1)+fib_rek(n-2) elif n==1: return 1 elif n==0: return 0 trek = mczas(fib_rek, 100, 25) titer = mczas(fib_iter, 100, 25) print('Rekurencyjnie: {}\n Iteracyjne: {}'.format(trek, titer)) #narysujmy wykres: treks = [] titers = [] for i in range(25): print(i/25.*100, '%') treks.append(mczas(fib_rek, 1000, i)) titers.append(mczas(fib_iter, 1000, i)) py.plot(treks, label='Rekurencyjnie') py.plot(titers, label='Iteracyjnie') py.xlabel('N-ta liczba ciągu') py.ylabel('Czas, [s]') py.title('Liczenie N-tego wyrazu ciągu Fibonaciego w Pythonie3') py.legend() py.show()