fork download
  1. def persistence(n):
  2. print("Entered persistence function with n =", n)
  3. if 0 <= n <= 9:
  4. print("n is a single digit number, returning n")
  5. return n
  6.  
  7. result = 0
  8. counter = 0
  9. while True:
  10. print("Previous result:", result)
  11. print("Previous counter:", counter)
  12. p = persistence(n // 10)
  13. print("Current persistence:", p)
  14. result += n % 10 * p
  15. counter += 1
  16. print("Current result:", result)
  17. print("Current counter:", counter)
  18. if result > 9:
  19. n = result
  20. result = 0
  21. print("Result is greater than 9, resetting result to 0 and continuing loop")
  22. continue
  23. print("Result is not greater than 9, returning counter")
  24. return counter
  25.  
  26.  
  27. print(persistence(999))
  28.  
Success #stdin #stdout 0.04s 9660KB
stdin
Standard input is empty
stdout
Entered persistence function with n = 999
Previous result: 0
Previous counter: 0
Entered persistence function with n = 99
Previous result: 0
Previous counter: 0
Entered persistence function with n = 9
n is a single digit number, returning n
Current persistence: 9
Current result: 81
Current counter: 1
Result is greater than 9, resetting result to 0 and continuing loop
Previous result: 0
Previous counter: 1
Entered persistence function with n = 8
n is a single digit number, returning n
Current persistence: 8
Current result: 8
Current counter: 2
Result is not greater than 9, returning counter
Current persistence: 2
Current result: 18
Current counter: 1
Result is greater than 9, resetting result to 0 and continuing loop
Previous result: 0
Previous counter: 1
Entered persistence function with n = 1
n is a single digit number, returning n
Current persistence: 1
Current result: 8
Current counter: 2
Result is not greater than 9, returning counter
2