16.01 Одна функция
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
– натуральное число, задан следующими соотношениями:
, при
, когда n > 3 и четное
, когда n > 3 и нечетное
Назовите минимальное значение n, для которого F(n) = 43.
Рекурсивное решение
В задаче задан рекурсивный алгоритм, при котором функция вызывает сама себя с другими аргументами. Для
реализации создаём пользовательскую функцию в Python с помощью . Внутри используем условный оператор
,
чтобы задать три случая: возвращать значение при
(базовый случай), обрабатывать чётное
и нечётное
. Для последнего случая следует заметить, что прибавление 2 к нечётному числу сохраняет его нечётность,
поэтому вызов
будет бесконечно увеличивать аргумент; чтобы избежать этого, в этом случае возвращаем 0,
обозначая, что функция неопределена. Для второго случая, где есть деление, учитываем, что
должно быть
натуральным; поэтому добавляем проверку выхода из функции, если
или не является целым числом. В
завершение запускаем перебор значений n и проверяем результат вызова функции; найдя первое подходящее
(минимальное)
, завершаем цикл.
def f(n): # объявление функции # Дописываем условие насчёт натуральных чисел if n < 1 or n % 1 != 0: return 0 if n <= 3: # базовый случай return 3 if n > 3 and n % 2 == 0: # рекурсивный случай return 5 + f(n / 2 - 4) # Вместо n + f(n+2) вставляем 0, # нам нужно не допускать нечётные числа, # так как при них рекурсия продолжается бесконечно — каждый раз прибавляется значение, # не меняющее чётность и не приближающее к n < 3 if n > 3 and n % 2 != 0: return 0 for n in range(1, 10000): if f(n) == 43: # если результат подходит print(n) # выводим ответ break # завершаем цикл
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— целое положительное число, задан следующими
соотношениями:
, если
целое число
иначе
Чему равно ?
Проанализируем, как изменяются значения на определенных значениях функции с помощью программы.
# Функция для проверки, является ли число степенью двойки def power_of_2(n): # Пока n натурально while n > 1: # Если n не кратно 2 if n % 2 != 0: # Так как это не единица (условие while проверяет это), # то это иное нечётное натуральное число, значит точно не степень двойки return False # Если же чётно, то у этого числа есть возможность быть # степенью двойки n //= 2 # Если мы не вышли из цикла ранее, то число не имеет иных простых делителей, # кроме двойки, значит это точно степнь двойки return True # Функция из условия def f(n): # Если число — степень двойки, то log будет целым if power_of_2(n): return n # Иначе рекурсивный случай else: return f(n - 1) + 2
Заметим, что функция от степеней двойки выводит само число, а для остальных получается значение
. И так до следующей степени
двойки.
Заметим, что . Посчитаем значение
по формуле, которую определили:
print((786432 - 2 ** 19) * 2 + 2 ** 19)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления функции задан следующими соотношениями:
, при
, при
Найдите наименьшее значение при котором
.
Рекурсивное решение
В задаче задан рекурсивный алгоритм, при котором функция в процессе вычислений вызывает сама себя с другими
аргументами. Для реализации создаём пользовательскую функцию в Python с помощью . Внутри
функции используем условный оператор
, чтобы задать два варианта работы: что возвращать при
(базовый случай) и при
. В каждом случае в return записываем соответствующее выражение,
что запускает цепочку рекурсивных вызовов. Процесс продолжается до достижения базового случая
, после чего результаты возвращаются обратно по цепочке. В завершение выполняем перебор
чисел
, для каждого запускаем функцию и проверяем, вернулось ли значение больше 700. Как только
находим первый
(который будет наименьшим), удовлетворяющий условию, выводим его и завершаем
цикл.
def F(n): # объявление функции if n <= 1: # базовый случай return n - 3 if n > 1: # рекурсивный случай return F(n - 3) + n + 1 for n in range(1000): if F(n) > 700: # если результат подходит print(n) # выводим ответ break # завершаем цикл
Получается ответ:
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
– целое число, задан следующими соотношениями:
, при
, при
Чему равно значение функции ?
В ответе запишите только натуральное число.
Решение программой:
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с другими аргументами
и
. Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим
ветвление:
и
. Для каждого случая будем возвращать описанное в условии выражение, таким образом и
будет запущена рекурсия.
def f(n): # Базовый случай: если n <= 2, возвращаем 1 if n <= 2: return 1 # Если n > 2, используем формулу f(n-1)*n + f(n-5)*5 if n > 2: return f(n - 1) * n + f(n - 5) * 5 # Вызываем функцию для n = 15 и выводим результат print(f(15))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
– натуральное число, задан следующими соотношениями:
при
, при
Чему равно значение функции ? В ответе запишите только натуральное число.
Примечание. Знак // – означает деление нацело.
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с другими аргументами
и
.
Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвление:
и
. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет
запущена рекурсия.
def f(n): # Базовый случай: если n <= 3, возвращаем 1 if n <= 3: return 1 # Если n > 3, используем формулу f(n // 3) + f(n - 1) + 2 if n > 3: return f(n // 3) + f(n - 1) + 2 # Вызываем функцию для n = 7 и выводим результат print(f(7))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
– натуральное число, задан следующими соотношениями:
, при
Чему равно значение функции ?
В ответе запишите только натуральное число.
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с другими аргументами
и
.
Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвление:
и
. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет
запущена рекурсия.
def f(n): # Базовый случай: если n <= 3, возвращаем 1 if n <= 3: return 1 # Если n > 3, используем формулу f(n-1)*3 - f(n-3) if n > 3: return f(n - 1) * 3 - f(n - 3) # Вызываем функцию для n = 10 и выводим результат print(f(10))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
– натуральное число, задан следующими соотношениями:
при
, при
Чему равно значение функции ?
В ответе запишите только целое число.
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с другими аргументами
и
.
Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвление:
и
. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет
запущена рекурсия.
def f(n): # Базовый случай: если n <= 5, возвращаем n if n <= 5: return n # Если n > 5, используем формулу (f(n-1) - f(n-4)) * n - 10 if n > 5: return (f(n - 1) - f(n - 4)) * n - 10 # Вызываем функцию для n = 23 и выводим результат print(f(23))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
- натуральное число, задан следующими соотношениями:
при
при
.
Чему равно значение функции ?
В ответе запишите только целое число.
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с другими аргументами
,
и
. Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим
ветвление:
и
. Для каждого случая будем возвращать описанное в условии выражение, таким образом и
будет запущена рекурсия.
def f(n): # Базовый случай: если n <= 3, возвращаем 10 if n <= 3: return 10 # Если n > 3, используем формулу 5*f(n-1) - 4*f(n-2) + 3*f(n-3) if n > 3: return 5 * f(n - 1) - 4 * f(n - 2) + 3 * f(n - 3) # Вызываем функцию для n = 13 и выводим результат print(f(13))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
при
при
Чему равно значение выражения ?
В задаче представлен рекурсивный алгоритм: функция вычисляется в зависимости от значения
.
Если
, используется базовое выражение
. Если
, применяется формула
. Внутри функции создаём ветвление:
и
. Для вычисления выражения
рекурсивно считаем значения
и
и выполняем их вычитание.
def f(n): # Базовый случай: если n >= 670, возвращаем n - 5 if n >= 670: return n - 5 # Если n < 670, используем рекурсивную формулу 5*n + 7 + f(5*n + 7) else: return 5*n + 7 + f(5*n + 7) # Вычисляем выражение F(600) - F(300) print(f(600) - f(300))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n – неотрицательное число, задан следующими соотношениями:
, если n > 1
Чему равно значение выражения ?
Решение программой:
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с другими аргументами
и
. Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим
ветвление:
,
и
. Для каждого случая будем возвращать описанное в условии выражение, таким
образом и будет запущена рекурсия.
def f(n): # Базовый случай: если n == 0, возвращаем 1 if n == 0: return 1 # Базовый случай: если n == 1, возвращаем 2 elif n == 1: return 2 # Рекурсивный случай: если n > 1, используем формулу 6*f(n-1) - f(n-2)*n else: return 6 * f(n - 1) - f(n - 2) * n # Вызываем функцию для n = 4 и выводим результат print(f(4))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
при
.
Чему равно значение функции F(12)? В ответе запишите только натуральное число.
Решение программой:
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с аргументом
. Реализуем этот
алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвление:
,
,
и
. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет
запущена рекурсия.
def f(n): # Базовый случай: если n == 1, возвращаем 3 if n == 1: return 3 # Базовый случай: если n == 2, возвращаем 6 elif n == 2: return 6 # Базовый случай: если n == 3, возвращаем 9 elif n == 3: return 9 # Рекурсивный случай: если n > 3, используем формулу f(n-3)*n + 2 else: return f(n - 3) * n + 2 # Вызываем функцию для n = 12 и выводим результат print(f(12))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
- целое неотрицательное число, задан следующими
соотношениями:
;
, если
и
четное;
, в остальных случаях.
В данной задаче означает деление нацело.
Определите количество значений на отрезке
, для которых
.
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с аргументом
. Внутри
функции создаём ветвление:
,
и чётное (
),
и нечётное (
). Для каждого
случая возвращаем соответствующее значение в соответствии с условием: если
, возвращаем 6; если
и чётное, возвращаем
; если
и нечётное, возвращаем
. После определения
функции перебираем все значения
на отрезке
и подсчитываем количество
, для которых
.
# Создаем функцию из условия def f(n): # Базовый случай: если n == 0, возвращаем 6 if n == 0: return 6 # Если n > 0 и четное, используем формулу 1 + f(n//2) elif n > 0 and (n % 2) == 0: return 1 + f(n // 2) # Если n > 0 и нечётное, используем формулу f(n//2) else: return f(n // 2) # Перебираем все возможные входные значения c = 0 for i in range(1, 10000 + 1): t = f(i) # Если f(i) = 9, увеличиваем счетчик if t == 9: c += 1 # Выводим количество значений n, для которых F(n) = 9 print(c)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
, если
, если
Чему равно значение выражения ?
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с аргументом
. Внутри функции
создаём ветвление:
и
. Если
, возвращаем значение
, иначе для
возвращаем
. После определения функции вычисляем разность
, чтобы получить ответ
задачи.
def F(n): # Если n > 1000, возвращаем n if n > 1000: return n # Если n <= 1000, используем формулу 7*n̂2 + 3 + F(n+1) if n <= 1000: return 7 * n ** 2 + 3 + F(n + 1) # Вычисляем разность F(6) - F(12) print(F(6) - F(12))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
, если
, если
, если
Чему равно значение выражения ?
Примечание. Запись // означает деление нацело.
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с разными аргументами в зависимости от
величины
. Внутри функции создаём ветвление:
,
и
. Если
, возвращаем
.
Если
, возвращаем
. Если
, возвращаем
. После определения функции
вычисляем
, чтобы получить ответ задачи.
def F(n): # Базовый случай: если n <= 15, возвращаем n if n <= 15: return n # Если 15 < n <= 25, используем формулу F(n-15) + n//3 if 15 < n <= 25: return F(n - 15) + n // 3 # Если n > 25, используем формулу F(n-6) if n > 25: return F(n - 6) # Вычисляем значение F(20) print(F(20))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
, если
, если
Чему равно значение выражения ?
В задаче дан рекурсивный алгоритм: функция вызывает саму себя с аргументом
, если
, и
возвращает
, если
. Внутри функции создаём ветвление:
и
. Если
,
возвращаем
. Если
, возвращаем
. После определения функции вычисляем выражение
для получения ответа.
def F(n): # Если n >= 100, возвращаем n + 2 if n >= 100: return n + 2 # Если n < 100, используем формулу 5 + n + F(n+2) if n < 100: return 5 + n + F(n + 2) # Вычисляем выражение F(90) - F(101) print(F(90) - F(101))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями (mod означает взять остаток при делении):
F(0) = 0;
F(n) = F(n - 1) + 3, если n > 0 и при этом n mod 3 = 2;
F(n) = F((n - n mod 3) / 3), если n > 0 и при этом n mod 3 < 2.
Укажите наименьшее возможное n, для которого F(n) = 6. Если таких значений нет, в ответе укажите -1.
В задаче представлен рекурсивный алгоритм: функция вычисляется в зависимости от остатка от деления
на
3.
Если , функция возвращает большое число (чтобы исключить ноль, так как
– натуральное).
Если и
, вычисляем
.
Если и
, вычисляем
.
Внутри функции создаём ветвление для трёх случаев: ,
и
,
и
.
После определения функции перебираем значения
от 0 до 999 и находим наименьшее
, для которого
.
def f(n): # Базовый случай: n = 0, возвращаем большое число, так как n должно быть натуральным if n == 0: return 99999999 # Если n > 0 и остаток от деления на 3 равен 2, используем формулу F(n-1) + 3 elif n > 0 and n % 3 == 2: return f(n - 1) + 3 # Если n > 0 и остаток от деления на 3 меньше 2, используем формулу F((n - n % 3)/3) elif n > 0 and n % 3 < 2: return f((n - n % 3) / 3) # Перебираем возможные значения n для поиска наименьшего, при котором F(n) = 6 for i in range(1000): if f(i) == 6: print(i) break # Останавливаем цикл после нахождения наименьшего n
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления функции задан следующими соотношениями:
при
, если
чётно,
, если
нечётно.
Чему равно значение функции ? Для выполнения задания можно также написать программу или
воспользоваться редактором электронных таблиц.
В задаче представлен рекурсивный алгоритм: функция вычисляется в зависимости от чётности
. Если
,
возвращаем
— это базовый случай. Если
чётное, используем формулу
, то есть значение
функции равно текущему
плюс значение функции для предыдущего числа. Если
нечётное, используем формулу
, то есть значение функции в три раза больше значения функции для числа на два меньше. Внутри
функции создаём ветвление для трёх случаев:
,
чётное,
нечётное. После определения функции вычисляем
по описанному рекурсивному алгоритму.
def F(n): # Базовый случай: если n = 1, возвращаем 1 if n == 1: return 1 # Если n чётное, используем формулу n + F(n-1) if n % 2 == 0: return n + F(n - 1) # Если n нечётное, используем формулу 3 * F(n-2) if n % 2 != 0: return 3 * F(n - 2) # Вычисляем значение функции F(30) print(F(30))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления функции задан следующими соотношениями:
, при
, при
Найдите количество положительных целых значений при котором
.
В задаче представлен рекурсивный алгоритм: функция вычисляется в зависимости от значения
. Если
,
используется формула
, что является базовым случаем. Если
, используется рекурсивная формула
, то есть значение функции равно значению функции для числа на два меньше плюс
.
Внутри функции создаём ветвление:
и
. Для определения количества положительных целых значений
,
при которых
, перебираем значения
и увеличиваем счётчик, если выполняется указанное
неравенство.
def F(n): # Базовый случай: если n <= 1, возвращаем n + 2 if n <= 1: return n + 2 # Рекурсивный случай: если n > 1, используем формулу F(n-2) + n + 3 else: return F(n - 2) + n + 3 # Инициализация счётчика положительных целых n, для которых F(n) < 565 count = 0 # Перебираем значения n от 1 до 999 (достаточно для условия задачи) for n in range(1, 1000): # Проверяем условие F(n) < 565 if F(n) < 565: count += 1 # Выводим количество положительных целых n, удовлетворяющих условию print(count)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления функции задан следующими соотношениями:
, при
, при
Найдите сумму положительных целых значений при которых
.
В задаче представлен рекурсивный алгоритм: функция вычисляется в зависимости от значения
. Если
, используется базовое выражение
. Если
, применяется рекурсивная формула
, то есть значение функции равно значению функции для числа на три меньше плюс
.
Внутри функции создаём ветвление:
и
. Для нахождения суммы положительных целых значений
,
при которых
, перебираем значения
и добавляем их к сумме, если выполняется указанное
неравенство.
def F(n): # Базовый случай: если n <= 1, возвращаем n + 3 if n <= 1: return n + 3 # Рекурсивный случай: если n > 1, используем формулу F(n-3) + n + 2 else: return F(n - 3) + n + 2 # Инициализация переменной для хранения суммы положительных целых n, для которых F(n) < 666 sum = 0 # Перебираем значения n от 1 до 999 (достаточно для условия задачи) for n in range(1, 1000): # Проверяем условие F(n) < 666 и добавляем n к сумме if F(n) < 666: sum += n # Выводим сумму положительных целых n, удовлетворяющих условию print(sum)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями
F(n) = n, если n 1,
F(n) = +
* n, если n > 1.
Определите значение выражения: .
В задаче представлен рекурсивный алгоритм: функция вычисляется в зависимости от значения
.
Если
, используется базовое выражение
. Если
, применяется рекурсивная формула
, то есть значение функции равно сумме
и произведения
на
. Внутри
функции создаём ветвление:
и
. Для нахождения значения выражения
вызываем функцию для
и
, а затем вычитаем полученные значения.
def F(n): # Базовый случай: если n <= 1, возвращаем n if n <= 1: return n # Рекурсивный случай: если n > 1, используем формулу F(n-1) + F(n-2) * n else: return F(n - 1) + F(n - 2) * n # Вычисляем значение выражения F(10) - F(5) print(F(10) - F(5))