fork download
  1. def sum_factorials(n, cache=[0, 1]):
  2. if len(cache) > n:
  3. return cache[n]
  4. previous = sum_factorials(n - 1)
  5. cache.append((previous - sum_factorials(n - 2)) * n + previous)
  6. return cache[n]
  7.  
  8. def f(n, i=1, factorial=1, result=1):
  9. if i == n:
  10. return result
  11. next = factorial * (i + 1)
  12. return f(n, i + 1, next, result + next)
  13.  
  14. import time
  15. start = time.time()
  16. result = sum_factorials(980)
  17. print(time.time() - start)
  18.  
  19. start = time.time()
  20. result2 = f(980)
  21. print(time.time() - start)
Success #stdin #stdout 0.02s 11584KB
stdin
Standard input is empty
stdout
0.0012433528900146484
0.0007984638214111328