Автор | Сообщение |
|
Отправлено: 25.09.22 21:47. Заголовок: Задача № 5605 (А. Куканова) - ЕГЭ 16
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями: F(n) = sqrt(n), если sqrt(n) – натуральное число, F(n) = F(n + 1) + 1, если sqrt(n) – дробное число. Чему равно значение выражения F(4850) + F(5000)? Подскажите, в чем ошибка в решении? from math import sqrt def f(n): if sqrt(n) > 0 and sqrt(n) == int(): return sqrt(n) if sqrt(n) == float(): return f(n+1)+1 print(int(f(4850)) + int(f(5000))) Ошибка в последней строке следующая: TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType' При выведении значений f(4850) и f(5000) выводится результат None.
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Сообщение: 3710
|
|
Отправлено: 27.09.22 21:14. Заголовок: Нужно так: def f(n)..
Нужно так: def f(n): q = round(n**0.5) if q*q == n: return q else: return f(n+1)+1 print(int(f(4850)) + int(f(5000)))
|
|
|
|
Отправлено: 11.10.22 15:44. Заголовок: Можно вот так сделать
При делении натурального числа на 2 мы получаем в остатке или 0, или 1 (чётные и нечётные числа), таким образом проверяем, если корень дает четное или нечётное целое число, то выводим корень этого числа, во всех остальных случаях применяет функцию F(n+1)+1 sqrt(n) запишем как n**0.5, что бы не подключать дополнительный математический модуль из библиотеки def F(n): if n**0.5%2==0 or n**0.5%2==1: return n**0.5 else: return F(n+1)+1 print(F(4850) + F(5000))
|
|
|
|
Отправлено: 15.12.22 17:30. Заголовок: Можно и так... imp..
Можно и так... import math def f(n): if n % math.sqrt(n) == 0: return math.sqrt(n) if n % math.sqrt(n) != 0: return f(n + 1) + 1 print(f(4850) + f(5000))
|
|
|
|