Тема 16. Рекурсивные алгоритмы
16.02 Две функции
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела рекурсивные алгоритмы
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#88107

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

F (n) = n  , при n < 15

F (n) = 2∗ F(n− 3)+ 4 + F(n− 1)  , при n ≥ 15

G (n) = 1+ 2∗ n  , при n ≥ 99

G (n) = n∗ G(n +2) +G (n∗ 2)  , при n < 99

Чему равна значение выражения F(52)− G (88)

Показать ответ и решение
def f(n):
    if n < 15:
        return n
    return 2 * f(n - 3) + 4 + f(n - 1)
def g(n):
    if n >= 99:
        return 1 + 2*n
    return n * g(n + 2) + g(n * 2)

print(f(52) - g(88))

Ответ: -132117717082049

Ошибка.
Попробуйте повторить позже

Задача 2#86295

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

F (n) = 200  , при n < 200

F (n) = (n+ 1)⋅F (n − 4)− 10⋅(n− 2)  , при n ≥ 200

G (n) = n  , при n ≥ 505

G (n) = n2 + G (n + 4)  , при n < 505

Чему равна сумма цифр выражения F(300)− G(20)

Показать ответ и решение
def f(n):
    if n < 200:
        return 200
    return (n + 1) * f(n - 4) - 10 * (n - 2)


def g(n):
    if n >= 505:
        return n
    return n ** 2 + g(n + 4)


print(sum(int(i) for i in str(f(300) - g(20))))

Ответ: 322

Ошибка.
Попробуйте повторить позже

Задача 3#72480

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

F (n) = 1  при n = 1

G (n) = 2  при n = 1

F (n) = F(n − 1) +1 ⋅G(n − 1), при n > 1

G (n) = F(n − 1) − 2 ⋅G(n − 1), при n > 1

Чему равна сумма цифр значения функции F(20)+G(10)?

Показать ответ и решение
 def F(n):
     if n == 1:
         return 1
     else:
         return F(n-1)+G(n-1)
 def G(n):
     if n == 1:
         return 2
     else:
         return F(n-1)-2*G(n-1)
 print(F(20)+G(10))
 

Программа выводит значение 3591153, в задании требуется найти сумму цифр этого числа: 3+ 5+ 9 + 1+ 1+ 5 + 3 = 27  – это и будет ответ на данную задачу.

Ответ: 27

Ошибка.
Попробуйте повторить позже

Задача 4#72463

Ниже записаны две рекурсивные функции F  и G  :

F (n) = n+ 3  , при n ≤ 2

F (n) = F(n − 1) +G (n− 2)  , при n > 2

G (n) = n+ 1  , при n ≤ 2

G (n) = G(n − 1) + F(n− 1)  , при n > 2

Вычислите значение выражения G (4) + F(5)  .

Показать ответ и решение
def F(n):
    if n > 2:
        return F(n-1)+ G(n-2)
    else: return n+3
def G(n):
    if n > 2:
        return G(n-1) + F(n-1)
    else: return n+1
print(G(4)+F(5))

Ответ: 33

Ошибка.
Попробуйте повторить позже

Задача 5#60730

Ниже записаны две рекурсивные функции F  и G  :

F (n) = n+ 2  , при n ≤ 2

F (n) = F(n − 1) +G (n− 1)  , при n > 2

G (n) = n+ 1  , при n ≤ 2

G (n) = G(n − 1) + F(n− 2)  , при n > 2

Вычислите значение выражения ∘G--(4)-+G-(3)  .

Показать ответ и решение
def f(n):
    if n <= 2:return n + 2
    return f(n-1) + g(n-1)
def g(n):
    if n <= 2:return n + 1
    return g(n-1) + f(n-2)
print((g(4)+g(3))**0.5)

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 6#60486

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

F (n) = n2  при n ≤ 2

G (n) = n− 1  при n ≤ 2

F (n) = G(n − 2) − F (n− 2)+ 8  при n > 2

G (n) = F(n − 1) +G (n− 1)  при n > 2

Найдите такое n  , при котором F(n) = 6607  .

Показать ответ и решение
def f(n):
    if n <= 2:
        return n**2
    if n > 2:
        return g(n-2)-f(n-2)+8

def g(n):
    if n <= 2:
        return n-1
    if n > 2:
        return f(n-1)+g(n-1)

for n in range(100):
    if f(n) == 6607:
        print(n)
        break

Ответ: 27

Ошибка.
Попробуйте повторить позже

Задача 7#60485

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

F (n) = n  при n ≤ 2

G (n) = n− 1  при n ≤ 2

F (n) = G(n∕∕2)+ F (n − 2)  при n > 2

G (n) = F(n − 2) − G (n∕∕5)+ 11  при n > 2

Найдите такое n  , при котором G(n) = 7693  .

Примечание. Знак // – означает деление нацело.

Показать ответ и решение
def f(n):
    if n <= 2:
        return n
    if n > 2:
        return g(n//2)+f(n-2)

def g(n):
    if n <= 2:
        return n-1
    if n > 2:
        return f(n-2)-g(n//5)+11

for n in range(100):
    if g(n) == 7693:
        print(n)

Ответ: 81

Ошибка.
Попробуйте повторить позже

Задача 8#60484

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

F (n) = 1  при n ≤ 3

G (n) = 1  при n ≤ 1

F (n) = G(n − 1) ∗F(n∕∕4)− 12  при n > 3

G (n) = F(n − 3) +G (n∕∕3)+ 1  при n > 1

Найдите такое n  , при котором F(n) = 14145  .

Примечание. Знак // – означает деление нацело.

Показать ответ и решение
def f(n):
    if n <= 3:
        return 1
    if n > 3:
        return g(n-1)*f(n//4) - 12

def g(n):
    if n <= 1:
        return 1
    if n > 1:
        return f(n-3)+g(n//3) + 1

for n in range(100):
    if f(n) == 14145:
        print(n)

Ответ: 26

Ошибка.
Попробуйте повторить позже

Задача 9#60483

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

F (n) = n− 1  при n ≤ 5

G (n) = n− 4  при n ≤ 5

F (n) = F(n − 1) ∗F(n − 1)− G(n− 4) − 2  при n > 5  .

G (n) = G(n − 3) ∗G(n − 3)− F(n− 4) +2  при n > 5  .

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

В ответе запишите только целое число.

Показать ответ и решение
def f(n):
    if n <= 5:
        return n-1
    if n > 5:
        return f(n-1) * f(n-1) - g(n-4) - 2

def g(n):
    if n <= 5:
        return n-4
    if n > 5:
        return g(n-3) - g(n-3) - f(n-4) + 2
print(f(9))

Ответ: 4227990526

Ошибка.
Попробуйте повторить позже

Задача 10#60482

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

F (n) = 1  при n ≤ 2

G (n) = 2  при n ≤ 3

F (n) = F(n − 1) +G (n− 2)− 2  при n > 2  .

G (n) = G(n − 1) − F(n− 2)+ 2  при n > 3  .

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

В ответе запишите только целое число.

Показать ответ и решение
def f(n):
    if n <= 2:
        return 1
    if n > 2:
        return f(n-1) + g(n-2) - 2

def g(n):
    if n <= 3:
        return 2
    if n > 3:
        return g(n-1) - f(n-2) + 2
print(f(31))

Ответ: -28636

Ошибка.
Попробуйте повторить позже

Задача 11#58970

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

F (n) = G(n) = 2  , при n = 1

F (n) = G(n − 1) ⋅F(n− 1)− nn  , при n > 1

G (n) = 5∗ F(n− 1)− n ⋅G(n − 1)  , при n > 1

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

Показать ответ и решение
from functools import lru_cache
@lru_cache(None)
def f(n):
    if n == 1:return 2
    if n > 1:return g(n-1) * f(n-1) -n**n
def g(n):
    if n == 1:return 2
    if n > 1:return 5*f(n-1)-n*g(n-1)
print(g(5))

Ответ: 1465

Ошибка.
Попробуйте повторить позже

Задача 12#54929

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

F (n) = 1  при n = 1

G (n) = 1  при n = 1

F (n) = F(n − 1) +2 ⋅G(n − 1), при n > 1

G (n) = F(n − 1) − 3 ⋅G(n − 1), при n > 1

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

Показать ответ и решение
from functools import lru_cache
def sum_of_digits(n):#Функция,подсчитывающая сумму цифр числа
    s = 0
    while n > 0:
        s += n % 10
        n //= 10
    return s
@lru_cache(None)
def f(n):
    if n == 1:return 1
    if n > 1:return f(n-1) + 2*g(n-1)

@lru_cache(None)
def g(n):
    if n == 1:return 1
    if n > 1:return  f(n-1)-3*g(n-1)
print(sum_of_digits(f(20)))

Ответ: 39
Рулетка
Вы можете получить скидку в рулетке!