16.02 Две функции
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Алгоритмы вычисления значения функции и
, где n — целое неотрицательное число, заданы следующими
соотношениями:
;
;
, при
;
, при
;
;
, при
.
Определите значение .
Динамическое решение
f = [0] * 10 g = [0] * 10 # Заполняем известные значения f[0] = 2 f[1] = 5 g[5] = 1 # Делаем перебор по возрастанию, # так как нужно обращаться к (n-1) и (n-2), # значения которых должны быть посчитаны заранее for n in range(10): if n > 1: f[n] = f[n - 1] * f[n - 2] if n < 5: g[n] = 0 if n > 5: g[n] = g[n - 1] + f[n - 2] print(f[5] + g[8])
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условные операторы
задаём два базовых случая: что
возвращать при
и
. В остальных случаях используем рекурсивную формулу. В функции
также через
задаём базовые случаи: при
и
. Иначе используем рекурсивную формулу. В завершение вычисляем
значение
и выводим результат.
def f(n): # объявляем функцию f(n) if n == 0: # базовый случай 1 return 2 if n == 1: # базовый случай 2 return 5 # Рекурсивный случай. Дойдём до этой строчки, # если условия выше не выполнятся, то есть # n точно больше единицы return f(n - 1) * f(n - 2) def g(n): # объявляем функцию g(n) if n < 5: # базовый случай 1 return 0 if n == 5: # базовый случай 2 return 1 # Рекурсивный случай. Та же история, что и выше: # n точно больше пяти return g(n - 1) + f(n - 2) # считаем и выводим ответ print(f(5) + g(8))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значений функций и
, где
— натуральное число, задан следующими
соотношениями:
Чему равно значение величины ?
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условный оператор
задаём базовый случай: что возвращать
при
. В остальных случаях используем рекурсивную формулу. В функции
также через
задаём базовый
случай: тоже при
. Иначе используем рекурсивную формулу. В завершение вычисляем значение
и
выводим результат.
def f(n): # объявляем функцию f(n) if n == 1: # базовый случай return 1 # Рекурсивный случай, сюда попадаем при n >= 2 return f(n - 1) - 2 * g(n - 1) def g(n): # объявляем функцию g(n) if n == 1: # базовый случай return 1 # Рекурсивный случай. Аналогично с функцией f, # тут n точно >= 2 return f(n - 1) + 2 * g(n - 1) # считаем и выводим ответ print(g(7) + f(4))
Ошибка.
Попробуйте повторить позже
Ниже записаны две рекурсивные функции F и G:
Помогите БУ определить числовое значение выражения
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условный оператор
задаём базовый случай при
, а в
остальных случаях используем рекурсивную формулу из условия задачи. В функции
также через
задаём базовый
случай при
, иначе применяем её рекурсивную формулу. В завершение вычисляем значение
и
выводим результат.
def f(n): # объявляем функцию f(n) if n <= 2: # базовый случай return n * 2 # рекурсивный случай, сюда попадем при n > 2 return f(n - 2) + g(n - 2) def g(n): # объявляем функцию g(n) if n <= 3: # базовый случай return n # рекурсивный случай, сюда попадем при n > 3 return g(n - 1) + f(n - 2) * f(n - 2) # считаем и выводим ответ print(f(6) + g(8))
Ошибка.
Попробуйте повторить позже
Ниже записаны две рекурсивные функции F и G:
Помогите БУ определить числовое значение выражения
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условный оператор
задаём базовый случай при
, а в
остальных случаях используем рекурсивную формулу из условия задачи. В функции
также через
задаём базовый
случай при
, иначе применяем её рекурсивную формулу. В завершение вычисляем значение
и
выводим результат.
def f(n): # объявляем функцию f(n) if n <= 1: # базовый случай return n * 3 # рекурсивный случай, сюда попадём при n > 1 return f(n - 2) + 2 * g(n - 1) def g(n): # объявляем функцию g(n) if n <= 2: # базовый случай return n # рекурсивный случай, сюда попадём при n > 2 return g(n - 2) + 2 * f(n - 2) * f(n - 2) # считаем и выводим ответ print(f(5) + g(6))
Ошибка.
Попробуйте повторить позже
Ниже записаны две рекурсивные функции F и G:
Помогите БУ определить числовое значение выражения
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условный оператор
задаём базовый случай при
, а в
остальных случаях используем рекурсивную формулу из условия задачи. В функции
также через
задаём базовый
случай при
, иначе применяем её рекурсивную формулу. В завершение вычисляем значение
и
выводим результат.
def F(n): # объявляем функцию F(n) if n <= 2: # базовый случай return n * n # рекурсивный случай, сюда попадём при n > 2 return F(n - 1) + G(n - 2) def G(n): # объявляем функцию G(n) if n <= 1: # базовый случай return n * 4 # рекурсивный случай, сюда попадём при n > 1 return G(n - 1) + F(n - 2) * F(n - 3) # считаем и выводим результат print(F(7) + G(8))
Ошибка.
Попробуйте повторить позже
Ниже записаны две рекурсивные функции и
:
Чему равно выражение ?
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условный оператор
задаём базовый случай при
, а в
остальных случаях используем рекурсивную формулу
. В функции
через
задаём базовый случай
при
, иначе применяем рекурсивную формулу
для чисел, которые не делятся на 7. В
завершение вычисляем значение
и выводим результат.
def F(n): # объявляем функцию F(n) if n < 10: # базовый случай return n # рекурсивный случай, сюда попадем при n > 9 return F(n) * F(n - 2) def G(n): # объявляем функцию G(n) if n < 11: # базовый случай return n * 3 # рекурсивный случай для n > 10 и не делящегося на 7 if n % 7 != 0: return F(n ** 2) + F(n ** 2 + 1) + F(n * n) # вычисляем и выводим результат print(G(10) ** F(2) + F(5))
Ошибка.
Попробуйте повторить позже
Ниже записаны две рекурсивные функции и
:
Чему равна сумма цифр данного выражения
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма — функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. Обе функции имеют базовый случай, заданный через
, и два варианта рекурсивного
вычисления. В
базовый случай при
, для
и кратных
используется один вариант рекурсии, для
остальных
— другой. В
базовый случай при
, для чётных
используется один вариант
рекурсии, для нечётных
— другой. В завершение вычисляем значение
, находим сумму цифр и
выводим результат.
def f(n): # объявляем функцию F(n) if n <= 10: # базовый случай return n if n % 10 == 0: # рекурсивный случай для n > 10 и кратных 10 return f(n % 5) + 1 # рекурсивный случай для n > 10 и некратных 10 return n * f(n - 1) def g(n): # объявляем функцию G(n) if n >= 21: # базовый случай return n * n + 1 * n + 3 if n % 2 == 0: # рекурсивный случай для чётных n < 21 return 2 * g(n - 2) * g(n - 4) # рекурсивный случай для нечётных n < 21 return 2 * g(n - 1) * g(n - 3) # вычисляем значение F(G(F(G(22)))) result = f(g(f(g(22)))) # преобразуем результат в строку и считаем сумму цифр s = 0 # счётчик для суммы for digit in str(result): # digit - каждая отдельная цифра в строковом виде s += int(digit) # преобразуем в int и добавляем в счётчик print(s)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значений функций и
, где n - целое неотрицательное число меньшее 1000, задан
следующими соотношениями: («//» - целочисленное деление)
При каких (каком) значениях (значении) n, выражение: , меньше
. В качестве ответа укажите сумму
таких значений
.
(Например: ,
. В ответ указываем сумму
и
).
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условный оператор
задаём базовый случай при
. Если
и делится на
, вызываем
от
. В остальных случаях вычисляем значение по
рекурсивной формуле из условия. В функции
аналогично: базовый случай при
, затем случай с
, кратным семи, и в остальных случаях – рекурсивная формула. Далее перебираем
от
до
,
проверяем условие
, и если оно выполняется, добавляем
к сумме. В конце выводим
результат.
def f(n): # объявляем функцию f(n) if n < 5: # базовый случай return 1 if n % 5 == 0: # рекурсивный случай для n > 4, кратных 5 return f(n // 5) # рекурсивный случай, сюда попадём при n > 4 и не кратных 5 return n - 5 * (n // 5) + f(n - 5 * (n // 5)) def g(n): # объявляем функцию g(n) if n < 7: # базовый случай return 1 if n % 7 == 0: # рекурсивный случай для n > 6, кратных 7 return g(n // 7) # рекурсивный случай, сюда попадём при n > 6 и не кратных 7 return n - 7 * (n // 7) + g(n - 7 * (n // 7)) ans = 0 # счётчик для суммы подходящих n for n in range(1000): if g(n) + f(n) < 3: # проверяем, что n подходит ans += n # добавляем в сумму само n print(ans)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значений функций и
, где n - целое неотрицательное, задан следующими
соотношениями:
Чему равно значение выражения: ?
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условный оператор
задаём базовый случай при
, а в
остальных случаях используем рекурсивную формулу. В функции
через
задаём базовый случай при
, иначе применяем рекурсивную формулу: если
нечётное, используем
, если
чётное, используем
. В завершение вычисляем значение
и выводим
результат.
def G(n): # объявляем функцию G(n) if n < 2: # базовый случай return 1 # рекурсивный случай, сюда попадём при n > 1 return F(n - 1) + 2 * G(n - 1) def F(n): # объявляем функцию F(n) if n < 2: # базовый случай return 1 if n % 2 == 1 and n > 1: # рекурсивный случай для нечётного n > 1 return F(n - 1) + G(n - 1) # рекурсивный случай, сюда попадём при чётном n > 1 return F(n - 2) + G(n - 2) # считаем и выводим значение выражения print(F(25) - G(25))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значений функций и
, где
— натуральное число, задан следующими
соотношениями:
Чему равно значение величины ?
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через условный оператор
задаём базовый случай при
, а в
остальных случаях используем рекурсивную формулу
. В функции
через
задаём базовый
случай при
, иначе применяем рекурсивную формулу
. В завершение вычисляем значение
и выводим результат.
def f(n): if n == 1: # базовый случай return 1 # рекурсивный случай, сюда попадём при n >= 2 return f(n - 1) - g(n - 1) def g(n): if n == 1: # базовый случай return 1 # рекурсивный случай, сюда попадём при n >= 2 return f(n - 1) + 3 * g(n - 1) print(g(16) + f(9)) # вычисляем и выводим ответ
Ошибка.
Попробуйте повторить позже
Ниже записаны две рекурсивные функции и
, где n – натуральное число, задан следующими
соотношениями:
Определите числовое значение выражения
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через
задаём базовый случай при
, а в остальных случаях
используем рекурсивную формулу
. В функции
через
задаём базовый случай при
, иначе применяем рекурсивную формулу
. В завершение вычисляем значение
и выводим результат.
def F(n): if n <= 2: # базовый случай return n * n # рекурсивный случай, сюда попадём при n > 2 return F(n - 2) + G(n - 1) * 2 - n def G(n): if n <= 2: # базовый случай return n + 1 # рекурсивный случай, сюда попадём при n > 2 return G(n - 1) + F(n - 2) + n print(F(5) + G(3)) # вычисляем и выводим ответ
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значений функций и
, где
- натуральное число, задан следующими
соотношениями:
, при
, при
, при
, при
Чему равно значение функции ?
Динамическое решение
f = [0] * 200 g = [0] * 200 # Делаем перебор по убыванию, # так как обращение идёт к (n+1) и (n+2), # которые должны быть посчитаны заранее for n in range(100, -1, -1): if n > 10: f[n] = n ** 2 if n <= 10: f[n] = f[n + 2] - 2 * g[n + 1] if n < 2: g[n] = n ** 3 if n >= 2: g[n] = f[n + 1] print(f[18])
Рекурсивное решение
В задаче заданы два рекурсивных алгоритма – функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В функции
через
задаём базовый случай при
, а в остальных случаях
используем рекурсивную формулу
. В функции
через
задаём базовый случай при
,
иначе применяем рекурсивную формулу
. В завершение вычисляем значение
и выводим
результат.
def f(n): if n > 10: # базовый случай return n ** 2 # рекурсивный случай, сюда попадём при n <= 10 return f(n + 2) - 2 * g(n + 1) def g(n): if n < 2: # базовый случай return n ** 3 # рекурсивный случай, сюда попадём при n >= 2 return f(n + 1) print(f(18)) # вычисляем и выводим ответ
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значений функций и
, где
- натуральное число, задан следующими
соотношениями:
, при
, при
, при
где значит целочисленное деление
Чему равно значение ?
Рекурсивное решение
В задаче определены две взаимно рекурсивные функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В обеих через
задаём одинаковый базовый случай при
, где возвращаем
.
Для
в рекурсивном случае используем формулу
. Для
— формулу
. В конце вычисляем
и выводим результат.
def F(n): if n < 3: # базовый случай return 2 # рекурсивный случай, сюда попадём при n > 2 return F(n - 1) + 2 * G(n - 1) + F(n // 2) def G(n): if n < 3: # базовый случай return 2 # рекурсивный случай, сюда попадём при n > 2 return F(n - 1) + G(n // 3) + G(n - 1) print(F(12) + G(4)) # выводим ответ
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значений функций и
, где
- натуральное число, задан следующими
соотношениями:
, при
, при
, при
, при
Чему равно значение ?
Рекурсивное решение
В задаче определены две взаимно рекурсивные функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В обеих через
задаём одинаковый базовый случай при
, где возвращаем
. Для
в рекурсивном случае используем формулу
. Для
– формулу
. В завершение вычисляем
и выводим результат.
def F(n): # функция F(n) if n < 3: # базовый случай return 2 * n * n + 2 # рекурсивный случай, сюда попадём при n > 2 return F(n - 1) + G(n - 2) def G(n): # функция G(n) if n < 3: # базовый случай return 2 * n * n + 2 # рекурсивный случай, сюда попадём при n > 2 return G(n - 2) + n * n - 3 print(F(15) * G(5)) # вывод результата
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значений функций и
, где
- натуральное число, задан следующими
соотношениями:
, при
, при
, при
Чему равна сумма цифр значения функции G()?
Рекурсивное решение
В задаче определены две взаимно рекурсивные функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В обеих через
задаём одинаковый базовый случай при
, где
возвращаем
. Для
в рекурсивном случае используем формулу
. Для
– формулу
. В завершение вычисляем
, преобразуем результат в строку, суммируем цифры и выводим
сумму.
def f(n): # объявляем функцию F(n) if n <= 1: # базовый случай return 11 # рекурсивный случай, сюда попадём при n > 1 return f(n - 5) + n * g(n // 4) def g(n): # объявляем функцию G(n) if n <= 1: # базовый случай return 11 # рекурсивный случай, сюда попадём при n > 1 return f(n // 3) + g(n - 1) summa = 0 # счётчик суммы цифр s = str(g(21)) # преобразуем результат в строку for i in s: # перебираем каждую цифру summa += int(i) # суммируем цифры print(summa) # вывод результата
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функций и
, где
— целое неотрицательное число, задан следующими
соотношениями:
, при
, если
и остаток от деления
на 2 равен 0
, если
и остаток от деления
на 2 равен 1
, если
и не делится на 3
, если
и делится на 3
, в других случаях
Определите наибольшее значение из отрезка
, при котором сумма цифр значения
равна
33.
Примечание: знак </> в данной задаче означает целочисленное деление.
Рекурсивное решение
В задаче определены две взаимно рекурсивные функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. В
базовый случай при
, где возвращаем
, для
будут два
варианта: для чётных вычисляем
, для нечётных
. В функции
при
будет
3 варианта: если
не делится на 3, используем
, если делится –
, в остальных
случаях возвращаем
. Затем перебираем
от 1000 до 1 (чтобы рассматривать сначала наибольшее
n), считаем сумму цифр
и выводим наибольшее
, у которого сумма цифр равна 33, завершаем
перебор.
def f(n): # объявляем функцию F(n) if n > 11 and n % 2 == 0: # рекурсивный случай для чётных n > 11 return g(n // 2) * 2 - f(n - 1) if n > 11 and n % 2 == 1: # рекурсивный случай для нечётных n > 11 return -g(n - 1) # базовый случай при n < 12 return n def g(n): # объявляем функцию G(n) if n < 12 and n % 3 != 0: # рекурсивный случай для n < 12 и некратных 3 return f(n - 1) + n elif n < 12 and n % 3 == 0: # рекурсивный случай для n < 12 и кратных 3 return g(n - 1) + f(n // 3) - n # все остальные случаи return n * n for i in range(1000, 0, -1): # перебор от 1000 до 1 # вычисляем модуль f(i) (чтобы отбросить знак) и обнуляем сумму s, summa = abs(f(i)), 0 while s > 0: # подсчёт суммы цифр summa += (s % 10) # забираем последнюю цифру в сумму s //= 10 # "обрезаем" последнюю цифру if summa == 33: # проверка условия print(i) # выводим наибольшее n break # завершаем цикл
Ошибка.
Попробуйте повторить позже
Алгоритмы вычисления значения функции и
, где
— натуральное число, заданы следующими
соотношениями:
Чему равно значение функции ?
Рекурсивное решение
Для реализации создаём две пользовательские функции в Python с помощью . Объявляем функцию
, где
базовый случай при
, возвращаем
, а рекурсивный случай для
, возвращаем
. Аналогично
объявляем функцию
, где уже два базовых случая при
(возвращаем
) и при
(возвращаем
), а для
используем рекурсию
. В конце вычисляем
и выводим
результат.
def F(k): # объявляем функцию F(k) if k == 1: # базовый случай return 1 return F(k - 1) * k # рекурсивный случай def Q(k): # объявляем функцию Q(k) if k == 1: # базовый случай return 1 if k == 2: # второй базовый случай return 3 return Q(k - 2) + Q(k - 1) # рекурсивный случай print(F(6) + Q(4)) # вычисляем и выводим результат
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления функций и
задан следующими соотношениями:
при
при
Чему равна сумма цифр значения функции F(20)?
Рекурсивное решение
В задаче определены две взаимно рекурсивные функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. Объявляем функцию
с базовым случаем при
, где возвращаем
, и
рекурсивным случаем для
. Аналогично объявляем функцию
с базовым случаем
и
рекурсией для
. Для подсчёта суммы цифр создаём отдельную функцию, которая перебирает все
цифры числа через цикл
и суммирует их. В конце запускаем эту функцию для
и получаем
ответ.
def sum_of_digits(n): # объявляем функцию подсчёта суммы цифр числа s = 0 # счётчик для суммы цифр while n > 0: # перебираем все цифры числа s += n % 10 # добавляем последнюю цифру к сумме n //= 10 # убираем последнюю цифру return s def F(n): # объявляем функцию F(n) if n == 1: # базовый случай return 1 return F(n - 1) + 2 * G(n - 1) # рекурсивный случай def G(n): # объявляем функцию G(n) if n == 1: # базовый случай return 1 return F(n - 1) - 3 * G(n - 1) # рекурсивный случай print(sum_of_digits(F(20))) # вычисляем и выводим сумму цифр F(20)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления функций F(n) и G(n) задан следующими соотношениями:
, при
, при
, при
Чему равно значение функции G(5)?
Рекурсивное решение
В задаче определены две взаимно рекурсивные функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. Объявляем функцию
с базовым случаем при
, где возвращаем
, и
рекурсивным случаем для
. Аналогично объявляем функцию
с базовым случаем
и рекурсией для
. В конце вычисляем
и получаем ответ.
def f(n): # объявляем функцию F(n) if n == 1: return 2 # базовый случай # рекурсивный случай для n > 1 return g(n - 1) * f(n - 1) - n ** n def g(n): # объявляем функцию G(n) if n == 1: return 2 # базовый случай # рекурсивный случай для n > 1 return 5 * f(n - 1) - n * g(n - 1) print(g(5)) # вычисляем G(5) и выводим результат
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функций и
, где
- целое неотрицательное число, заданы следующими
соотношениями:
при
при
при
.
при
.
Чему равно значение функции ?
В ответе запишите только целое число.
Рекурсивное решение
В задаче определены две взаимно рекурсивные функции и
. Для реализации создаём две пользовательские
функции в Python с помощью
. Объявляем функцию
с базовым случаем при
, где
возвращаем
, и рекурсивным случаем для
. Аналогично объявляем функцию
с базовым
случаем при
, где возвращаем
, и рекурсией для
. В конце вычисляем
и получаем
ответ.
def f(n): # объявляем функцию F(n) if n <= 2: return 1 # базовый случай # рекурсивный случай для n > 2 return f(n - 1) + g(n - 2) - 2 def g(n): # объявляем функцию G(n) if n <= 3: return 2 # базовый случай # рекурсивный случай для n > 3 return g(n - 1) - f(n - 2) + 2 # вычисляем F(31) и выводим результат print(f(31))