Задание 16. Рекурсивные алгоритмы

Рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

ВАРИАНТ 1

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = n, при n < 3;
F(n) = 2 * (n - 1) + F(n - 1) + 2, 
если n > 2 и при этом n чётно;
F(n) = 
 2 * (n + 1)  + F(n - 2) - 5, если n > 2 и при этом n нечётно.

Чему равно значение функции F(32)?

Решение и ответ

def F(n):
    if n < 3: return n
    if n > 2 and n % 2 == 0: return 2 * (n - 1)+ F(n - 1) + 2
    if n > 2 and n % 2 == 1: return 2 * (n + 1) + F(n - 2) - 5  

print(F(32))

Ответ: 530

ВАРИАНТ 2

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = n, при n < 3;
F(n) = 3 * (n - 1) + F(n - 1) + 5, 
если n > 2 и при этом n чётно;
F(n) = 
 3 * (n + 1)  + F(n - 2) - 2, если n > 2 и при этом n нечётно.

Чему равно значение функции F(35)?

 
Решение и ответ

аналогично 1  варианту

Ответ: 987

ВАРИАНТ 3

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = 1, при n < 3;
F(n) =  F(n - 1) + 
F(n - 2)если n > 2 и при этом n нечётно;
F(n) =  ∑F(i) 1<=i<=n-1, если n > 2 и при этом n чётно,

Чему равно значение функции F(24)?

Решение и ответ

def F(n):
    if n < 3: return 1
    if n > 2 and n % 2 == 1: return F(n - 1)+ F(n - 2)
    if n > 2 and n % 2 == 0: return sum(F(i) for i in range (1,n))  

print(F(24))

Ответ: 887040

ВАРИАНТ 4

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = 1, при n < 3;
F(n) =  F(n - 1) + 
F(n - 2)если n > 2 и при этом n нечётно;
F(n) =  ∑F(i) 1<=i<=n-1, если n > 2 и при этом n чётно,

Чему равно значение функции F(39)?

Решение и ответ
Декоратор @lru_cache() модуля functools оборачивает функцию с переданными в нее аргументами и запоминает возвращаемый результат. Данная конструкция может сэкономить время и ресурсы, когда функция периодически вызывается с одинаковыми аргументами.

from functools import lru_cache
@lru_cache

def F(n):
    if n < 3: return 1
    if n > 2 and n % 2 == 1: return F(n - 1) - F(n - 2)
    if n > 2 and n % 2 == 0: return sum(F(i) for i in range (1,n))  

print(F(39))

Ответ: 41518080

ВАРИАНТ 5

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = 1, при n <= 1;
F(n) = 5 * n + F(n - 1) + F(2),
если n>1 и при этом n нечётно;
F(n) = 3 * F(n - 1),
если n > 1 и при этом n чётно.

Чему равно значение функции F(23)?

Решение и ответ
def F(n):
    if n <= 1: return 1
    if n > 1 and n % 2 == 1: return 5 * n + F(n-1) + F(2)
    if n > 1 and n % 2==0: return 3 * F(n-1)   

print(F(23))

Ответ: 2214271

ВАРИАНТ 6

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = 1, при n <= 1;
F(n) = 4 * n + F(n - 1) - F(2), 
если n>1 и при этом n нечётно;
F(n) = 3 * F(n - 1), 
если n > 1 и при этом n чётно.

Чему равно значение функции F(35)?

Решение и ответ
def F(n):

    if n <= 1: return 1
    if n > 1 and n % 2 == 1: return 4 * n + F(n-1) - F(2)
    if n > 1 and n % 2==0: return 3* F(n-1)   

print(F(35))

Ответ: 968551148

ВАРИАНТ 7

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = 1, при n <=1;
F(n) = 3 + F(n - 1) * F(n - 2) - F(n - 1) - F(n - 2), 
если n>1 и при этом n нечётно;
F(n) = 2 * F(n - 1), 
если n > 1 и при этом n чётно.

Чему равно значение функции F(12)?

Решение и ответ
def F(n):
    if n <= 1: return 1
    if n > 1 and n % 2 == 1: return 3 + F(n-1) * F(n-2) - F(n-1) - F(n-2)
    if n > 1 and n % 2 == 0: return 2 * F(n-1)  

print(F(12))

Ответ: 30830260

ВАРИАНТ 8

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = 2, при n <=1;
F(n) = 1 + F(n - 1) * F(n - 2) - F(n - 1) - F(n - 2), 
если n>1 и при этом n нечётно;
F(n) = 2 * F(n - 1), 
если n > 1 и при этом n чётно.

Чему равно значение функции F(12)?

Решение и ответ
def F(n):
    if n <= 1: return 2
    if n > 1 and n % 2 == 1: return 1 + F(n-1) * F(n-2) - F(n-1) - F(n-2)
    if n > 1 and n % 2 == 0: return 2 * F(n-1)  

print(F(12))

Ответ: 13441735782

ВАРИАНТ 9

Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = n + 2 * F(n - 1) , 
если n чётно;
F(n) = 1 + 3 * F(n - 2), 
если n > 1 и при этом n нечётно.

Чему равно значение функции F(17)?

Решение и ответ
def F(n):
    if n = 1: return 1
    if n % 2 == 0: return n + 2 * F(n-1)
    if n > 1 and n % 2 == 1: return 1 + 3 * F(n-2)  

print(F(17))

Ответ: 9841

ВАРИАНТ 10

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = n + 3 * F(n - 1) , 
если n чётно;
F(n) = 2 + 2 * F(n - 2), 
если n > 1 и при этом n нечётно.

Чему равно значение функции F(23)?

Решение и ответ
def F(n):
    if n = 1: return 1
    if n % 2 == 0: return n + 3 * F(n-1)
    if n > 1 and n % 2 == 1: return 2 + 2 * F(n-2)  

print(F(23))

Ответ: 6142

ВАРИАНТ 11

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = n + F(n - 1) , 
если n чётно;
F(n) = 2 * F(n - 1) + F(n-2), 
если n > 1 и при этом n нечётно.

Чему равно значение функции F(20)?

Решение и ответ
def F(n):
    if n = 1: return 1
    if n % 2 == 0: return n + F(n-1)
    if n > 1 and n % 2 == 1: return 2 * F(n-1) + F(n-2)  

print(F(20))

Ответ: 78731

ВАРИАНТ 12

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = n + F(n - 1) , 
если n чётно;
F(n) = F(n - 1) + 2 * F(n-2), 
если n > 1 и при этом n нечётно.

Чему равно значение функции F(19)?

Решение и ответ
def F(n):
    if n = 1: return 1
    if n % 2 == 0: return n + F(n-1)
    if n > 1 and n % 2 == 1: return F(n-1) + 2 * F(n-2)  

print(F(19))

Ответ: 49197

ВАРИАНТ 13

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = n * F(n - 1) , 
если n >1.

Чему равно значение функции F(446)/F(443)?

Решение и ответ

def F(n):
    if n == 1: return 1
    if n > 1: return n * F(n-1)      

print(F(446)//F(443))

Ответ: 88120680

ВАРИАНТ 14

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = 2, при n = 2;
F(n) = n * (n - 1)*
 F(n - 1) , если n >2.

Чему равно значение функции F(123)/F(120)?

Решение и ответ

def F(n):
    if n == 1: return 1
    if n == 2: return 2
    if n > 2: return n * (n-1) * F(n-1)      

print(F(123)//F(120))

Ответ: 3216449665440

ВАРИАНТ 15

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = 1, при n = 2;
F(n) = 2  + F(n - 1), 
если n > 2 и при этом n чётно;
F(n) = 
 3 * n + F(n - 2), если n > 2 и при этом n нечётно.

Чему равно значение функции F(43)?

Решение и ответ

def F(n):
    if n == 1: return 1
    if n == 2: return 2
    if n > 2 and n % 2 == 0: return 2 + F(n - 1)
    if n > 2 and n % 2 == 1: return 3 * n + F(n - 2)

print(F(43))

Ответ: 1450

ВАРИАНТ 16

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = 1, при n = 2;
F(n) = 3  + F(n - 1), 
если n > 2 и при этом n чётно;
F(n) = 
 2 * n + F(n - 2), если n > 2 и при этом n нечётно.

Чему равно значение функции F(42)?

Решение и ответ

 

аналогично 15 варианту

Ответ: 884

ВАРИАНТ 17

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = n2 + F(n - 1), если n > 1

Чему равно значение функции F(2023) - F(2019)?

Решение и ответ

Программирование приводит к ошибке maximum recursion depth exceeded. Попробуем разобраться о чем программа. Результатом выполнения функции является сумма квадратов убывающей последовательности от заданного числа до 1. Поскольку должны получить в конце разность F(2023) - F(2019) , то таким образом функция является суммой квадратов чисел 2023, 2022, 2021, 2020. 

print(2023**2 + 2022**2 + 2021**2 +2020**2)

Ответ: 16345854

ВАРИАНТ 18

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = 2, при n = 2;
F(n) = n*(n - 1) + F(n - 1) + F(n - 2), если n > 2

Чему равно значение функции F(2023) - F(2021) - 2*F(2020) - F(2019)?

Решение и ответ
Программирование приводит к ошибке maximum recursion depth exceeded

В задании видимо опечатка,  если поставить минус перед удвоенным  - 2*F(2020), то получается ответ. Но с предложенным в тетради не сходится.

2023*2022 + f2022 + f2021 - f2021 - 2*f2020 - f2019 = 2023*2022 + f2022 - 2*f2020 - f2019 = 2023*2022 + 2022*2021 + f2021 + f2020 - 2*f2020 - f2019 = 2023*2022 + 2022*2021 + f2021 - f2020 - f2019 = 2023*2022 + 2022*2021 + 2021*2020 + f2020 + f2019 - f2020 - f2019 = 2023*2022 + 2022*2021 + 2021*2020

print(2023*2022 + 2022*2021 + 2021*2020)

Ответ: 12259388

ВАРИАНТ 19

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = 2, при n = 2;
F(n) = [(7*n + F(n - 3))/9], если n > 2 и при этом n четно
F(n) = [(5*n + F(n - 1) + F(n - 2))/7], если n > 2 и при этом n нечетно

Чему равно значение функции F(50)?

Примечание: Квадратные скобки в записи [x] применяются для обозначения целой части числа.

 
Решение и ответ

def F(n):
    if n == 1: return 1
    if n == 2: return 2
    if n > 2 and n % 2 == 0: return (7*n + F(n - 3))//9
    if n > 2 and n % 2 == 1: return (5*n + F(n - 1)+ F(n - 2))//7

print(F(50))

Ответ: 43

ВАРИАНТ 20

Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:

F(n) = 1, при n = 1;
F(n) = 2, при n = 2;
F(n) = [(8*n + F(n - 3))/9], если n > 2 и при этом n четно
F(n) = [(4*n + F(n - 1) + F(n - 2))/7], если n > 2 и при этом n нечетно

Чему равно значение функции F(52)?

Примечание: Квадратные скобки в записи [x] применяются для обозначения целой части числа.

 
Решение и ответ

 

аналогично варианту 19

Ответ: 50

 

Комментарии  
Антонина Приходько
0 # Антонина Приходько 04.06.2024 13:24
В задании типа 17 чтобы программа работала, надо увеличить глубину рекурсии. Для этого в начале программы надо ввести import sys
sys.setrecursionlimit(3000)
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Ирина
0 # Ирина 04.06.2024 22:05
Конечно, можно увеличить. Только остается открытым вопрос, любой ли компьютер потянет это увеличение? Ведь неизвестно, что за техника достанется на экзамене
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Добавить комментарий


РСЯ футер

© 2017 Компьютерный клуб "КОД". Все права защищены.