16.01 Одна функция
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— целое неотрицательное число, задан следующими
соотношениями:
, если
и при этом
чётно;
, если
нечётно.
Назовите минимальное значение , для которого
.
Дана рекурсия ; если
и
чётно, то
; если
нечётно, то
.
Требуется найти минимальное
, для которого
. Для решения динамикой создадим список для хранения
значение функции, где каждому i-тому элементу соответсвует
. Последовательно заполним список и выведем
значение, если
.
Динамическое решение
f = [0] * 4097 # f[n] будет хранить F(n) for n in range(1, 4097): # База для n = 0 if n == 0: f[n] = 0 # Чётное n elif n > 0 and n % 2 == 0: f[n] = f[n//2] # Нечётное n else: f[n] = 1 + f[n-1] # Если находим n, при котором f(n) = 12 if f[n] == 12: # Пишем значение print(n) break
В задаче задан рекурсивный алгоритм, при котором функция в процессе вычислений вызывает сама себя с другими
аргументами. Для реализации создаём пользовательскую функцию в Python с помощью . Внутри функции
используем условный оператор
, чтобы задать ветвление. Далее пройдемся циклом
с перемнной i, будм на
каждой итерации проверять f(i), и если
, то прибавляем к i единицу и далее проверяем следующее число,
пока
не станет равно
Рекурсивное решение
def F(n): # База для n = 0 if n == 0: return 0 # Чётное n if n % 2 == 0 and n > 0: return F(n // 2) # Нечётное n if n % 2 != 0: return 1 + F(n - 1) i = 0 # Начинаем проверять числа с 0 while F(i) != 12: # Пока не нашли нужное число i i += 1 # Увеличиваем его на 1 print(i)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— натуральное число, задан следующими
соотношениями:
,
,
;
, при
.
Чему равно значение функции ?
Решение программой:
В задаче дан рекурсивный алгоритм: функция F(n) вызывает саму себя с другими аргументами (n - 1 или n - 3). Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвления: n = 1, n = 2, n = 3 и n > 3. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет запущенна рекурсия. Затем, останется только запустить функцию f для n = 5.
# Задаём функию F(n) # Аргумент n - натуральное число по условию def f(n): # Базовый случай. Определяем значение для F(1) if n == 1: return 1 # Базовый случай. Определяем значение для F(2) if n == 2: return 2 # Базовый случай. Определяем значение для F(3) if n == 3: return 4 # Рекурсивный случай. Вычисляем значение функции для n, если n > 3 else: return 5 * f(n - 1) + 3 * f(n - 3) # Выводим значение функции F(5) print(f(5))
Решение руками:
Данная в условии формула называется рекурретной. Это
означает, что значение функции от некоторого аргумента зависит от значения функций от
других аргументов. Так, чтобы найти значение
, нужно найти значение
и
, а чтобы найти найти значение
, нужно найти значение
и
(аналогично для
) и так далее (до момента, пока аргумент функции не
станет меньше или равен 3, так как для таких аргументов значение функции известно из
условия).
Нам даны значения функции для , найдем значение функции
:
;
Значение нам неизвестно, найдем его:
;
Подставим найденное значение в :
.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— натуральное число, задан следующими
соотношениями:
,
;
, при
.
Чему равно значение функции ?
Решение программой:
В задаче дан рекурсивный алгоритм: функция F(n) вызывает саму себя с другими аргументами (n - 1 или n - 2). Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвления: n = 1, n = 2 и n > 2. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет запущенна рекурсия. Затем, останется только запустить функцию f для n = 6.
# Задаём функию F(n) # Аргумент n - натуральное число по условию def f(n): # Базовый случай. Определяем значение для F(1) if n == 1: return 1 # Базовый случай. Определяем значение для F(2) if n == 2: return 2 # Рекурсивный случай. Вычисляем значение функции для n, если n > 2 else: return f(n - 1) + 3 * f(n - 2) # Выводим значение функции F(6) print(f(6))
Решение руками:
Данная в условии формула называется рекурретной. Это означает,
что значение функции от некоторого аргумента зависит от значения функций от других аргументов.
Так, чтобы найти значение
при
, нужно найти значение
и
, а
чтобы найти найти значение
, нужно найти значение
и
(аналогично с поиском значения
) и так далее (до момента, пока аргумент функции не
станет меньше или равен 2, так как для таких аргументов значение функции известно из
условия).
Найдем значение функции :
;
;
;
;
;
;
.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– натуральное число, задан следующими
соотношениями:
при
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: функция F(n) вызывает саму себя с другими аргументами (n - 1 или n - 2). Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвления: n = 0, n = q и n > 1. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет запущенна рекурсия. Затем, останется только запустить функцию f для n = 6.
# Задаём функию F(n) def f(n): # Базовый случай. Определяем значение для F(0) if n == 0: return 1 # Базовый случай. Определяем значение для F(1) if n == 1: return 2 # Рекурсивный случай. Вычисляем значение функции для n, если n > 1 if n > 1: return f(n - 1) * f(n - 2) - f(n - 2) # Выводим значение функции F(6) print(f(6))
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– натуральное число, задан следующими
соотношениями:
при
.
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: функция F(n) вызывает саму себя с другими аргументами (n - 1, n - 2 или n - 3). Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвления: n = 0, n = 1, n = 2 и n > 2. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет запущенна рекурсия. Затем, останется только запустить функцию f для n = 5.
# Задаём функию F(n) # Аргумент n - целое неотрицательное число по условию def f(n): # Базовый случай. Определяем значение для F(0) if n == 0: return 1 # Базовый случай. Определяем значение для F(1) elif n == 1: return 2 # Базовый случай. Определяем значение для F(2) elif n == 2: return 3 # Рекурсивный случай. Вычисляем значение функции для n, если n > 2 elif n > 2: return f(n - 1) ** f(n - 3) - f(n - 2) # Выводим значение функции F(5) print(f(5))
Получаем ответ:
Решение руками:
Нам даны ,
,
. Используем их, чтобы подставить в формулу:
и пишем в ответ.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– натуральное число, задан следующими
соотношениями:
при
.
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: функция F(n) вызывает саму себя с другими аргументами (n - 1, n - 2 или n - 3). Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвления: n = 0, n = 1, n = 2 и n > 2. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет запущенна рекурсия. Затем, останется только запустить функцию f для n = 4.
# Задаём функию F(n) # Аргумент n - целое неотрицательное число по условию def f(n): # Базовый случай. Определяем значение для F(0) if n == 0: return 1 # Базовый случай. Определяем значение для F(1) elif n == 1: return 3 # Базовый случай. Определяем значение для F(2) elif n == 2: return 3 # Рекурсивный случай. Вычисляем значение функции для n, если n > 2 elif n > 2: return f(1) * f(n - 1) ** f(n - 3) + f(n - 2) # Выводим значение функции F(4) print(f(4))
Получаем ответ:
Решение руками:
Нам даны ,
,
. Используем их, чтобы подставить в формулу:
и пишем в ответ.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– натуральное число, задан следующими
соотношениями:
. При
.
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: функция F(n) вызывает саму себя с другими аргументами (n - 1, n - 2). Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвления: n = 1, n = 2 и n > 2. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет запущенна рекурсия. Затем, останется только запустить функцию f для n = 4.
# Задаём функию F(n) # Аргумент n - целое неотрицательное число по условию def f(n): # Базовый случай. Определяем значение для F(1) if n == 1: return 2 # Базовый случай. Определяем значение для F(2) elif n == 2: return 3 # Рекурсивный случай. Вычисляем значение функции для n, если n > 2 elif n > 2: return 2 * f(n - 1) ** f(n - 2) + 2 # Выводим значение функции F(4) print(f(4))
Получаем ответ:
Решение руками:
Нам даны ,
. Подставим их в формулу:
и пишем в ответ.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– число, заданное следующими соотношениями:
. При
.
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: функция F(n) вызывает саму себя с другими аргументами (n - 1, n - 2). Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвления: n = -1, n = 0 и n > 0. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет запущенна рекурсия. Затем, останется только запустить функцию f для n = 3.
# Задаём функию F(n) def f(n): # Базовый случай. Определяем значение для F(-1) if n == -1: return 1 # Базовый случай. Определяем значение для F(0) elif n == 0: return 1 # Рекурсивный случай. Вычисляем значение функции для n, если n > 0 elif n > 0: return f(n - 1) * f(n - 1) + f(n - 1) + f(n - 2) # Выводим значение функции F(3) print(f(3))
Получаем ответ:
Решение руками:
Нам даны ,
. Подставим их в формулу:
и пишем в ответ.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– неотрицательное число, задан следующими
соотношениями:
. При
.
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: функция F(n) вызывает саму себя с другими аргументами (n - 1, n - 2). Реализуем этот алгоритм на Python, для этого создадим функцию def f(n). Внутри функции создадим ветвления: n = 0, n = 1 и n > 1. Для каждого случая будем возвращать описанное в условии выражение, таким образом и будет запущенна рекурсия. Затем, останется только запустить функцию f для n = 5.
# Задаём функию F(n) # Аргумент n - целое неотрицательное число по условию def f(n): # Базовый случай. Определяем значение для F(0) if n == 0: return 2 # Базовый случай. Определяем значение для F(1) elif n == 1: return 3 # Рекурсивный случай. Вычисляем значение функции для n, если n > 1 elif n > 1: return f(n - 2) * f(n - 1) + n # Выводим значение функции F(5) print(f(5))
Получаем ответ:
Решение руками:
В условии нам даны и
. Используем их для решения задачи:
и будет ответом на вопрос задачи.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– натуральное число, задан следующими
соотношениями:
. При
.
Определите значение
Решение программой:
Определяем рекурсивную функцию по заданной формуле. Если
, функция возвращает
, так как
. Если
, функция вычисляет
и прибавляет результат вызова
, что соответствует формуле
. После определения функции вызываем
для получения значения
.
def f(n): # Базовый случай: если n равно 1, возвращаем 2 if n == 1: return 2 # Рекурсивный случай: если n больше 1, вычисляем n*n и прибавляем значение функции от n-1 elif n > 1: return n * n + f(n - 1) # Вызываем функцию f для n = 7 и выводим результат print(f(7))
Получаем ответ:
Решение руками:
В условии нам дано . Подставим его значение в формулу для решения задачи:
и будет ответом на вопрос задачи.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– целое неотрицательное число, задан
следующими соотношениями:
. При
.
Определите значение
Решение руками:
В условии нам даны ,
,
. Используем их значения для решения задачи:
и будет ответом на вопрос задачи.
Решение программой:
В задаче дан рекурсивный алгоритм: в базовых исходах F(0) = 1, F(1) = 2 — эти значения задают начальные случаи и останавливают рекурсию. Для остальных значений применяется формула, выражающая F(n) через предыдущие значения: f(n - 1) * (n - 1) + f(n - 2). При вычислении F(5) рекурсия разворачивается и сводится к базовым исходам, после подстановки которых получается итоговое числовое значение.
# Базовые случаи: F(0) = 1, F(1) = 2 — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: F(n) определяется по формуле: f(n - 1) * (n - 1) + f(n - 2) def f(n): # Определение функции, реализующей алгоритм из условия if n == 0: # Базовый случай — проверяем условие и при выполнении возвращаем значение return 1 # Возвращаем вычисленное значение elif n == 1: # Базовый случай — проверяем условие и при выполнении возвращаем значение return 2 # Возвращаем вычисленное значение else: # В остальных случаях выполняем следующий блок return f(n - 1) * (n - 1) + f(n - 2) # Возвращаем вычисленное значение print(f(6)) # Выводим результат на экран
Получаем ответ:
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– неотрицательное число, задан следующими
соотношениями:
. При
.
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: в базовых исходах F(0) = 1, F(1) = 2 — эти значения задают начальные случаи и останавливают рекурсию. Для остальных значений применяется формула, выражающая F(n) через предыдущие значения: (n + 1) * f(n - 1) + f(n - 2). При вычислении F(5) рекурсия разворачивается и сводится к базовым исходам, после подстановки которых получается итоговое числовое значение.
# Базовые случаи: F(0) = 1, F(1) = 2 — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: F(n) определяется по формуле: (n + 1) * f(n - 1) + f(n - 2) def f(n): # Определение функции, реализующей алгоритм из условия if n == 0: # Базовый случай — возвращаем значение без рекурсии return 1 # Возвращаем базовое значение elif n == 1: # Базовый случай — возвращаем значение без рекурсии return 2 # Возвращаем базовое значение else: # Рекурсивный случай — возвращаем выражение с рекурсивным вызовом return (n + 1) * f(n - 1) + f(n - 2) # Возвращаем значение рекурсивного выражения print(f(5)) # Выводим результат на экран
Решение руками:
В условии нам даны ,
. Так давайте используем их для решения задачи:
и будет ответом на вопрос задачи.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции F(n), где n > -2 – целое число, задан следующими соотношениями:
при
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: в базовых исходах F(-1) = 0, F(0) = 1, F(1) = 1 — эти значения задают начальные случаи и останавливают рекурсию. Для остальных значений применяется формула, выражающая F(n) через предыдущие значения: f(n - 1) * f(n - 2) - f(n - 3). При вычислении F(6) рекурсия разворачивается и сводится к базовым исходам, после подстановки которых получается итоговое числовое значение.
# Базовые случаи: F(-1) = 0, F(0) = 1, F(1) = 1 — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: F(n) определяется по формуле: f(n - 1) * f(n - 2) - f(n - 3) def f(n): # Определение функции, реализующей алгоритм из условия if n == -1: # Базовый случай — возвращаем значение без рекурсии return 0 # Возвращаем базовое значение elif n == 0: # Базовый случай — возвращаем значение без рекурсии return 1 # Возвращаем базовое значение elif n == 1: # Базовый случай — возвращаем значение без рекурсии return 1 # Возвращаем базовое значение elif n > 1: # Рекурсивный случай — возвращаем выражение с рекурсивным вызовом return f(n - 1) * f(n - 2) - f(n - 3) # Возвращаем значение рекурсивного выражения print(f(6)) # Выводим результат на экран
Решение руками:
Нам даны
и
. Используем их и подставляем в формулу:
и будет ответом на задание.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
– целое число, задан следующими
соотношениями:
при
Определите значение
Решение программой:
В задаче дан рекурсивный алгоритм: в базовых исходах F(-1) = 0, F(0) = 1, F(1) = 1 — эти значения задают начальные случаи и останавливают рекурсию. Для остальных значений применяется формула, выражающая F(n) через предыдущие значения: f(n - 1) * f(n - 2) - f(n - 3). При вычислении F(6) рекурсия разворачивается и сводится к базовым исходам, после подстановки которых получается итоговое числовое значение.
# Базовые случаи: F(-1) = 0, F(0) = 1, F(1) = 1 — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: F(n) определяется по формуле: f(n - 1) * f(n - 2) - f(n - 3) def f(n): # Определение функции, реализующей алгоритм из условия if n == -1: # Базовый случай — возвращаем значение без рекурсии return 0 # Возвращаем базовое значение elif n == 0: # Базовый случай — возвращаем значение без рекурсии return 1 # Возвращаем базовое значение elif n == 1: # Базовый случай — возвращаем значение без рекурсии return 1 # Возвращаем базовое значение elif n > 1: # Рекурсивный случай — возвращаем выражение с рекурсивным вызовом return f(n - 1) * f(n - 2) - f(n - 3) # Возвращаем значение рекурсивного выражения print(f(6)) # Выводим результат на экран
Решение руками:
Нам даны
и
. Используем их и подставляем в формулу:
1 и будет ответом на задание.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— натуральное число, задан следующими
соотношениями:
, при
;
, при
.
Чему равно значение функции ?
Решение программой:
Функция определяется рекурсивно по 2 правилам: при
возвращаем n, при
вычисляем как
. Для нахождения
напрямую вызовем
функцию.
# Базовые случаи: для n < 4 возвращается n — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: f(n) определяется по формуле: 4 * f(n - 1) - 2 * f(n - 2) * f(n - 3) def f(n): # Определение функции, реализующей алгоритм из условия if n < 4: # Базовый случай — возвращаем значение без рекурсии return n # Возвращаем базовое значение elif n > 2: # Рекурсивный случай — возвращаем выражение с рекурсивным вызовом return 4 * f(n - 1) - 2 * f(n - 2) * f(n - 3) # Возвращаем значение рекурсивного выражения print(f(6)) # Выводим результат на экран
Решение руками:
Данная в условии формула называется рекурретной. Это
означает, что значение функции от некоторого аргумента зависит от значения функций от других
аргументов. Так, чтобы найти значение
при
, нужно найти значение
,
и
, а чтобы найти найти значение
, нужно найти значение
,
и
(аналогично с поиском значения
,
и
) и так
далее (до момента, пока аргумент функции не станет меньше или равен 3, так как для таких аргументов
значение функции известно из формулы из условия).
Найдем значение функции :
;
;
;
;
;
;
.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции где
– натуральное число, задан следующими
соотношениями:
. При
.
Определите значение в ответе указать только положительное число.
Определяем рекурсивную функцию по заданным соотношениям. При
сразу
возвращаем
, так как
. Если
, вызываем функцию для
, добавляем к
результату
и возвращаем полученное значение. После определения функции
вызываем
и вычисляем квадратный корень от результата для получения положительного
числа.
def f(n): # Базовый случай: если n равно 0, возвращаем 1 if n == 0: return 1 # Рекурсивный случай: если n больше 0, вычисляем n*(n+1) и прибавляем значение функции от n-1 if n > 0: return n * (n + 1) + f(n - 1) # Вызываем функцию f для n = 10 и вычисляем квадратный корень от результата print(f(10) ** 0.5)
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— целое неотрицательное число, задан
следующими соотношениями:
, при
;
, при
.
Чему равно значение функции ?
Решение программой:
Функция определяется рекурсивно по 2 правилам: при
возвращаем n, при
вычисляем как
. Для нахождения
напрямую вызовем
функцию.
# Базовые случаи: для n < 3 возвращается n — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: f(n) определяется по формуле: f(n - 1) * f(n - 2) - f(n - 3) def f(n): # Определение функции, реализующей алгоритм из условия if n < 3: # Базовый случай — возвращаем значение без рекурсии return n # Возвращаем базовое значение if n > 2: # Рекурсивный случай — возвращаем выражение с рекурсивным вызовом return f(n - 1) * f(n - 2) - f(n - 3) # Возвращаем значение рекурсивного выражения print(f(4)) # Выводим результат на экран
Решение руками:
Данная в условии формула называется рекурретной. Это
означает, что значение функции от некоторого аргумента зависит от значения функций от других
аргументов. Так, чтобы найти значение
при
, нужно найти значение
,
и
, а чтобы найти найти значение
, нужно найти значение
,
и
(аналогично с поиском значения
и
) и так далее (до
момента, пока аргумент функции не станет меньше или равен 2, так как для таких аргументов значение
функции известно из формулы из условия).
Найдем значение функции :
;
Нам известны значения ,
и
(2, 1, 0), но неизвестно значение
. Найдем
его:
;
Подставим найденные значения в :
.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— целое неотрицательное число, задан
следующими соотношениями:
,
,
;
, при
Чему равно значение функции ?
Решение программой:
Функция определяется рекурсивно по 4 правилам: при
возвращаем 0, при
возвращаем 2, при
возвращаем 3, при
вычисляем как
. Для
нахождения
напрямую вызовем функцию.
# Базовые случаи: F(0) = 0, F(1) = 2, F(2) = 3 — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: f(n) определяется по формуле: f(n - 2) + 2 * f(n - 3) def f(n): # Определение функции, реализующей алгоритм из условия if n == 0: # Базовый случай — возвращаем значение без рекурсии return 0 # Возвращаем базовое значение elif n == 1: # Базовый случай — возвращаем значение без рекурсии return 2 # Возвращаем базовое значение elif n == 2: # Базовый случай — возвращаем значение без рекурсии return 3 # Возвращаем базовое значение elif n > 2: # Рекурсивный случай — возвращаем выражение с рекурсивным вызовом return f(n - 2) + 2 * f(n - 3) # Возвращаем значение рекурсивного выражения print(f(7)) # Выводим результат на экран
Решение руками:
Данная в условии формула называется рекурретной. Это означает,
что значение функции от некоторого аргумента зависит от значения функций от других аргументов.
Так, чтобы найти значение
при
, нужно найти значение
и
, а
чтобы найти найти значение
, нужно найти значение
и
(аналогично с поиском значения
) и так далее (до момента, пока аргумент функции не
станет меньше или равен 2, так как для таких аргументов значение функции известно из
условия).
Нам даны значения ,
и
. Найдем значение функции
:
;
;
;
;
;
.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— натуральное число, задан следующими
соотношениями:
,
,
;
, при
.
Чему равно значение функции ?
Решение программой:
Функция определяется рекурсивно по 4 правилам: при
возвращаем 1, при
возвращаем 3, при
возвращаем 6, при
вычисляем как
. Для
нахождения
напрямую вызовем функцию.
# Базовые случаи: F(1) = 1, F(2) = 3, F(3) = 6 — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: f(n) определяется по формуле: f(n - 2) * f(n - 3) def f(n): # Определение функции, реализующей алгоритм из условия if n == 1: # Базовый случай — возвращаем значение без рекурсии return 1 # Возвращаем базовое значение elif n == 2: # Базовый случай — возвращаем значение без рекурсии return 3 # Возвращаем базовое значение elif n == 3: # Базовый случай — возвращаем значение без рекурсии return 6 # Возвращаем базовое значение elif n > 3: # Рекурсивный случай — возвращаем выражение с рекурсивным вызовом return f(n - 2) * f(n - 3) # Возвращаем значение рекурсивного выражения print(f(8)) # Выводим результат на экран
Решение руками:
Данная в условии формула называется рекурретной. Это означает, что
значение функции от некоторого аргумента зависит от значения функций от других аргументов. Так,
чтобы найти значение
при
, нужно найти значение
и
, а
чтобы найти найти значение
, нужно найти значение
и
(аналогично с поиском значения
) и так далее (до момента, пока аргумент функции не
станет меньше или равен 3, так как для таких аргументов значение функции известно из
условия).
Нам даны значения ,
и
. Найдем значение функции
.
;
;
;
;
;
;
.
Ошибка.
Попробуйте повторить позже
Алгоритм вычисления значения функции , где
— целое неотрицательное число, задан
следующими соотношениями:
, при
;
, при
.
Чему равно значение функции ?
Решение программой:
Функция определяется рекурсивно по 2 правилам: при
возвращаем n, при
вычисляем как
. Для нахождения
напрямую вызовем
функцию.
# Базовые случаи: для n < 3 возвращается n — они задают начальные значения и останавливают рекурсию # Рекурсивное правило: f(n) определяется по формуле: f(n - 1) * f(n - 3) + 2 * f(n - 2) def f(n): # Определение функции, реализующей алгоритм из условия if n < 3: # Базовый случай — возвращаем значение без рекурсии return n # Возвращаем базовое значение if n > 2: # Рекурсивный случай — возвращаем выражение с рекурсивным вызовом return f(n - 1) * f(n - 3) + 2 * f(n - 2) # Возвращаем значение рекурсивного выражения print(f(6)) # Выводим результат на экран
Решение руками:
Данная в условии формула называется рекурретной. Это
означает, что значение функции от некоторого аргумента зависит от значения функций от других
аргументов. Так, чтобы найти значение
при
, нужно найти значение
,
и
, а чтобы найти найти значение
, нужно найти значение
,
и
(аналогично с поиском значения
) и так далее (до момента, пока
аргумент функции не станет меньше или равен 2, так как для таких аргументов значение функции
известно из формулы из условия).
Найдем значение функции :
;
;
;
;
;
;
.