1. Napiši funkcijo za izračun n-tega Fibonacijevega števila v rekurzivni obliki (n-to Fibonacijevo število je enako vsoti n-1-tega in n-2-tega. Prvo in drugo Fibonacijevo število je 0.) Poskusi izračunati deseto, dvanajsto, štirinajsto ... ... število. Kako narašča čas računanja? Kako velika števila lahko še izračunaš v doglednem času?

  2. Dodaj dekorator @lru_cache. Kako hitro se števila računajo zdaj?

  3. Napiši funkcijo vsota(s), ki vrne vsoto elementov v s. Če je s slučajno slovar, naj vrne vsoto vrednosti v tem slovarju, ne vsoto ključev. Če je s niz, naj ga razcepi (split), pretvori kose v števila in jih sešteje.

  4. Če v prejšnji točki še nisi naredil(a) tako: reši jo z uporabo dekoratorja @singledispatch.


  1. Napiši dekorator @zaokrozena3, ki poskrbi, da je rezultat dekorirane funkcije zaokrožen na tri decimalke.

  2. Napiši dekorator @dump, ki pokliče dekorirano funkcijo s podanimi argumenti, nato pa izpiše ime klicane funkcije, njene argumente in rezultat. Če, recimo, pokličemo fibo(6, b=1) in funkcija vrne 8, se mora mimogrede (po dekoratorjevi zaslugi) izpisati fibo(6, b=1) -> 8.

Последнее изменение: понедельник, 4 апреля 2016, 23:01