SHARE
TWEET

рекурсия ошибка

a guest Mar 1st, 2019 95 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Написать функцию happy_numbers(n), которая возвращает список всех
  2. # счастливых чисел в интервале от 1 до n.
  3. # Число является счастливым, если для него выполняется следующая закономерность:
  4. # 7^2=49 -> 4^2+9^2=97 -> 9^2+7^2=130 -> 1^2+3^2+0^2=10 -> 1^2+0^2=1
  5. # (в конце остается единица)
  6.  
  7.  
  8. import traceback
  9.  
  10.  
  11. def happy_numbers(n):
  12.     count=0
  13.     process=list()
  14.         #разбираем число по цифрам
  15.     while n>0:
  16.             i=0
  17.             process.insert(-i, n%10)
  18.             n=n//10
  19.             i=i+1
  20.         #цикл возводит в квадрат попадаемое в него число
  21.     empty=0
  22.     for s in process:
  23.         empty=empty+(s*s)
  24.         n=empty
  25.     try:
  26.        
  27.         if n!=1:
  28.             count=count+1
  29.             return happy_numbers(n)
  30.         else:
  31.             return n
  32.     except RecursionError:
  33.         return happy_numbers(n+1)
  34.  
  35. # Тесты
  36. try:
  37.     assert happy_numbers(10) == [1, 7, 10]
  38.     assert happy_numbers(50) == [1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49]
  39.     assert happy_numbers(100) == [1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100]
  40. except AssertionError:
  41.     print("TEST ERROR")
  42.     traceback.print_exc()
  43. else:
  44.     print("TEST PASSED")
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top