Автор | Сообщение |
|
Отправлено: 12.11.21 22:12. Заголовок: № 16 ошибка рекурсии
Проблемы в решении 16 номера. Вот один из них. 75) Алгоритм вычисления функции F(n), где n – целое число, задан следующими соотношениями: F(n) = n, при n <= 1, F(n) = 1 + F(n / 2), когда n > 1 и чётное, F(n) = 1 + F(n + 2) , когда n > 1 и нечётное. Назовите минимальное значение n, для которого F(n) = 16. Запускаю программу, выходит ошибка рекурсии. Вот программа: def F(n): if n <= 1: return n elif n > 1 and n % 2 == 0: return F(n // 2) elif n > 1 and n % 2 != 0: return 1 + F(n + 2) for n in range(1, 1000): if F(n) == 16: print(n) Решал на листочке. Не получилось решить, так как рекурсия ссылается на большее число. Мне кажется, что ошибка в задаче, а именно в строчке return 1 + F(n + 2) Если я в проге пеняю + на -, то все выходит. А если возвращаю +, то получаю ошибку: RecursionError: maximum recursion depth exceeded in comparison
|
|
|
Ответов - 1
[только новые]
|
|
|
| Администратор
|
Сообщение: 3013
|
|
Отправлено: 12.11.21 22:19. Заголовок: Да, в этой задаче ре..
Да, в этой задаче рекурсия в некоторых случаях бесконечная. Эти случаи рассматривать не нужно. Ответ на вопрос "что делать" можно найти здесь.
|
|
|