fork download
  1. def fib(n):
  2. if n == 0:
  3. return 0
  4. elif n == 1:
  5. return 1
  6. else:
  7. return fib(n - 1) + fib(n - 2)
  8.  
  9. def wrapper(func):
  10. cache = {}
  11.  
  12.  
  13. def inner(n):
  14. print("Wrapped")
  15. if n not in cache:
  16. cache[n] = func(n)
  17. print(cache[n])
  18. return cache[n]
  19. return inner
  20.  
  21. fib = wrapper(fib)
  22.  
  23. print(fib(5))
  24.  
  25. print(fib(13))
Success #stdin #stdout 0.01s 28384KB
stdin
Standard input is empty
stdout
Wrapped
Wrapped
Wrapped
Wrapped
Wrapped
1
Wrapped
0
1
Wrapped
1
2
Wrapped
1
3
Wrapped
2
5
5
Wrapped
Wrapped
Wrapped
Wrapped
Wrapped
Wrapped
Wrapped
Wrapped
Wrapped
5
Wrapped
3
8
Wrapped
5
13
Wrapped
8
21
Wrapped
13
34
Wrapped
21
55
Wrapped
34
89
Wrapped
55
144
Wrapped
89
233
233