Форум » Рекурсивные процедуры и функции » задание 80 егэ16 » Ответить

задание 80 егэ16

Агаркова: Здравствуйте. Решаю данную рекурсию, как только i становится 6 и более, перестает вычислять рекурсию. Посмотрите, пожалуйста, программу. В чем ошибаюсь def f(n): if n<=5: return n elif n%3==0: return n+f(n/3+2) else: return n+f(n+3) i=0 while f(i)<=1000: i+=1 print(i, f(i))

Ответов - 1

Поляков: Понятно, что когда рекурсия пошла по второй ветке, она по крайней мере в некоторых случаях начинает бесконечно раскручиваться. Как бороться: а) ловить исключение по переполнению стека; б) считать количество вложенных вызовов и прекращать процесс, скажем, при 100 вызовах. Примеры программ есть в темах этого раздела, посмотрите.



полная версия страницы