Автор | Сообщение |
|
Отправлено: 09.01.23 12:01. Заголовок: Выдает все время ошибку с рекурсией, не понимаю в чем дело
#zadanie 80 def f(n): if n<=5: return n if n>5 and n%3==0: return n+f(n//3+2) if n>5 and n%3!=0: return n+f(n+3) for n in range (1, 100): if f(n)>1000: print(n) break #asnwer:
|
|
|
Ответов - 5
[только новые]
|
|
|
Отправлено: 09.01.23 14:26. Заголовок: if n>5 and n%3!=..
if n>5 and n%3!=0: return n+f(n+3) уводит в бесконечную рекурсию.
|
|
|
|
Отправлено: 09.01.23 16:44. Заголовок: MrAndrewson пишет: ..
MrAndrewson пишет: [quote]` Вот условие задания тогда: 80) Алгоритм вычисления функции F(n), где n – целое число, задан следующими соотношениями: F(n) = n, при n 5, F(n) = n + F(n / 3 + 2), когда n > 5 и делится на 3, F(n) = n + F(n + 3) , когда n > 5 и не делится на 3. Назовите минимальное значение n, для которого F(n) определено и больше 1000.
|
|
|
|
Отправлено: 09.01.23 16:44. Заголовок: Условие задания: 80)..
Условие задания: 80) Алгоритм вычисления функции F(n), где n – целое число, задан следующими соотношениями: F(n) = n, при n 5, F(n) = n + F(n / 3 + 2), когда n > 5 и делится на 3, F(n) = n + F(n + 3) , когда n > 5 и не делится на 3. Назовите минимальное значение n, для которого F(n) определено и больше 1000.
|
|
|
|
Отправлено: 10.01.23 13:58. Заголовок: Здесь простым опреде..
Здесь простым определением функции не решить, поскольку есть значения n, при которых функция не определена. Как вариант - считать только те значения функции, которые вычислимы. s = [-1] * 1000 for n in range(1000 - 3): if n <= 5: s[n] = 5 elif n % 3 == 0 and s[n // 3 + 2] != -1: s[n] = n + s[n // 3 + 2] elif n % 3 != 0 and s[n + 3] != -1: s[n] = n + f[n + 3] for i in range(1000): if s[ i] != -1: print(i, s)
|
|
|
|
Отправлено: 11.01.23 16:17. Заголовок: Спасибо..
Спасибо
|
|
|
|