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

16.02 Две функции

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

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

Задача 1#18689

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

F (0) = 2  ;

F (1) = 5  ;

F (n) = F(n − 1) ∗F(n − 2)  , при n > 1  ;

G (n) = 0  , при n < 5  ;

G (5) = 1  ;

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

Определите значение F (5)+ G(8)  .

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

Ответ: 12550501

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

Задача 2#24417

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

F (1) = 1;  G(1) = 1;

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

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

Чему равно значение величины G (7)+ F(4)  ?

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

def g(n):
    if n == 1:
        return 1
    return f(n - 1) + 2 * g(n - 1)
print(g(7) + f(4))

Ответ: -108

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

Задача 3#25614

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

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

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

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

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

Помогите БУ определить числовое значение выражения

F (6)+ G (8)

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


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


print(f(6) + g(8))

Ответ: 750

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

Задача 4#25776

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

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

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

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

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

Помогите БУ определить числовое значение выражения

F (5)+ G (6)

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

Ответ: 3237

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

Задача 5#25935

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

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

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

G (n) = n⋅4,при n ≤ 1

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

Помогите БУ определить числовое значение выражения

F (7)+ G (8)

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


def G(n):
    if n <= 1:
        return n*4
    if n > 1:
        return G(n-1)+F(n-2)*F(n-3)


print(F(7)+G(8))

Ответ: 776

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

Задача 6#25962

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

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

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

G (n) = n⋅3, при n < 11

G (n) = F(n2)+ F (n2 + 1)+ F(nn), когда n > 10, и не делится на 7

Чему равно выражение G (10)(F(2)) + F(5)  ?

Показать ответ и решение
def F(n):
    if n < 10:
        return n
    if n > 9:
        return F(n)*F(n-2)


def G(n):
    if n < 11:
        return n*3
    if n > 10 and n % 7 != 0:
        return F(n**2)+F(n**2+1)+F(n**n)


print(G(10)**F(2)+F(5))

Ответ: 905

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

Задача 7#26068

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

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

F (n) = F(n%5 )+ 1, при n > 10 и кратном 10

F (n) = n⋅F (n− 1), при n > 10 и не кр атном 10

G (n) = n⋅n + 1⋅n + 3, при n ≥ 21

G (n) = 2⋅G (n − 2)⋅G(n − 4), при четном n, которое м еньш е 21

G (n) = 2⋅G (n − 1)⋅G(n − 3), при неч етном n, которое меньш е 21

Чему равна сумма цифр данного выражения (F (G (F (G(22)))))?

Показать ответ и решение
def f(n):
    if n <= 10:
        return n
    if n % 10 == 0:
        return f(n % 5) + 1
    return n * f(n - 1)


def g(n):
    if n >= 21:
        return n * n + 1 * n + 3
    if n % 2 == 0:
        return 2 * g(n - 2) * g(n - 4)
    return 2 * g(n - 1) * g(n - 3)


print(sum(int(_) for _ in (str(f(g(f(g(22))))))))

Ответ: 681

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

Задача 8#26095

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

F (n) = 1, при n < 5;

F (n) = F(n∕∕5), если n > 4 и при этом n д ели тся на 5;

F (n) = n− 5 ∗(n∕∕5)+ F(n − 5 ∗(n∕∕5)), если n > 4 и при этом n не делится на 5;

G (n) = 1, при n < 7;

G (n) = G(n∕∕7), если n > 6 и при этом n дели тся на 7;

G (n) = n− 7 ∗(n∕∕7)+ G(n − 7∗(n∕∕7)),  если n > 6 и при этом n не делится на 7;

При каких(каком) значениях(значении) n, выражение: G (n) +F (n)  , меньше 3  . В качестве ответа укажите сумму таких значений n  .(Например: G (a)+ F(a) < 3  , G(b)+ F(b) < 3  . В ответ указываем сумму a  и b  ).

Показать ответ и решение
def f(n):
    if n < 5:
        return 1
    if n % 5 == 0:
        return f(n // 5)
    return n - 5 * (n // 5) + f(n - 5 * (n // 5))

def g(n):
    if n < 7:
        return 1
    if n % 7 == 0:
        return g(n // 7)
    return n - 7 * (n // 7) + g(n - 7 * (n // 7))

ans = 0
for n in range(10000):
    if g(n) + f(n) < 3:
        ans += n
print(ans)

Ответ: 15

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

Задача 9#26149

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

G (n) = 1, при n < 2;

G (n) = F(n − 1) +2 ⋅G(n − 1), если n бол ьш е 1;

F (n) = 1, при n < 2;

F (n) = F(n − 1) +G (n− 1), если n нечетное и больш е 1;

F (n) = F(n − 2) +G (n− 2), если n четное и больш е 1;

Чему равно значение выражения: F (25)− G(25)  ?

 

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


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


print(F(25)-G(25))

Ответ: -699883104

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

Задача 10#27459

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

F (1) = 1; G (1) = 1;

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

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

Чему равно значение величины G (16)+ F(9)  ?

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

def g(n):
    if n == 1:
        return 1
    return f(n - 1) + 3 * g(n - 1)

print(g(16) + f(9))

Ответ: 522496

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

Задача 11#27998

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

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

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

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

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

Определите числовое значение выражения F (5) + G(3)

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


def G(n):
    if n <= 2:
        return n + 1
    if n > 2:
        return G(n - 1) + F(n - 2) + n

print(F(5) + G(3))

Ответ: 36

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

Задача 12#30446

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

F (n) = n2  , при n > 10

F (n) = F(n +2) − 2 ∗G (n + 1)  , при n ≤ 10

G (n) = n3  , при n < 2

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

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

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


def g(n):
    if n < 2:
        return n ** 3
    else:
        return f(n + 1)


print(f(18))

Ответ: 324

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

Задача 13#30448

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

F (n) = G(n) = 2  , при n < 3

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

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

где ∕  значит целочисленное деление

Чему равно значение F (12) + G(4)  ?

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

Ответ: 29476

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

Задача 14#30449

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

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

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

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

G (n) = G(n − 2) + n∗n − 3  , при n > 2

Чему равно значение F (15) ∗G(5)  ?

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

Ответ: 56928

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

Задача 15#30451

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

F (n) = G(n) = 11  , при n ≤ 1

F (n) = F(n − 5) +n ∗G (n∕∕4)  , при n > 1

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

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

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

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

summa = 0
s = str(g(21))
for i in s:
    summa += int(i)

print(summa)

Ответ: 18

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

Задача 16#30453

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

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

F (n) = G(n∕2)∗ 2− F(n − 1)  , если n > 11  и остаток от деления n  на 2 равен 0

F (n) = − G (n − 1)  , если n > 11  и остаток от деления n  на 2 равен 1

G (n) = F(n − 1) +n  , если n < 12  и не делится на 3

G (n) = G(n − 1) + F(n∕3)− n  , если n < 12  и делится на 3

G (n) = n∗ n  , в других случаях

Определите наибольшее значение n  из отрезка [1;1000]  , при котором сумма цифр значения F(n)  равна 33.

Примечание: знак </> в данной задаче означает целочисленное деление.

Показать ответ и решение
def f(n):
    if n > 11 and n % 2 == 0:
        return g(n // 2) * 2 - f(n - 1)
    if n > 11 and n % 2 == 1:
        return -g(n - 1)
    return n
def g(n):
    if n < 12 and n % 3 != 0:
        return f(n - 1) + n
    elif n < 12 and n % 3 == 0:
        return g(n - 1) + f(n // 3) - n
    return n * n
for i in range(1000, 0, -1):
    s, summa = abs(f(i)), 0
    while s > 0:
        summa += (s % 10)
        s //= 10
    if summa == 33:
        print(i)
        break

Ответ: 946

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

Задача 17#36055

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

F (1) = 1

F (k) = F(k− 1)⋅k

Q (1) = 1

Q (2) = 3

Q (k) = Q(k− 2)+ Q (k− 1)

Чему равно значение функции F(6)+ Q(4)  ?

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

  def q(n):
      if n == 1:
          return 1
      if n == 2:
          return 3
      return q(n - 2) + q(n - 1)

  print(f(6) + q(4))

Ответ: 727

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

Задача 18#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

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

Задача 19#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

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

Задача 20#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
Рулетка
Вы можете получить скидку в рулетке!