Вопрос:

5. Алгоритм вычисления функции F(n), где n – натуральное число, задан следующими соотношениями: F(n)=n, если n≥ 10 000, F(n)=1+F(n/2), если n < 10 000 и n чётное, F(n)=n²+F(n+2), если n< 10 000 и n нечётное. Чему равно значение выражения F(192) - F(9)?

Смотреть решения всех заданий с листа

Ответ:

Краткое пояснение: Нужно вычислить значения F(192) и F(9) по заданным рекуррентным формулам, а затем найти их разность.

Разбираемся:

Реализуем функцию F(n) на Python, чтобы вычислить значения.

Показать код на Python

def F(n):
    if n >= 10000:
        return n
    elif n % 2 == 0:
        return 1 + F(n // 2)
    else:
        return n * n + F(n + 2)

print(F(192) - F(9))

Теперь вычислим F(192) и F(9):

  • F(192) = 1 + F(96) = 1 + (1 + F(48)) = 2 + F(48) = 2 + (1 + F(24)) = 3 + F(24) = 3 + (1 + F(12)) = 4 + F(12) = 4 + (1 + F(6)) = 5 + F(6) = 5 + (1 + F(3)) = 6 + F(3) = 6 + (3*3 + F(5)) = 6 + 9 + F(5) = 15 + F(5) = 15 + (5*5 + F(7)) = 15 + 25 + F(7) = 40 + F(7) = 40 + (7*7 + F(9)) = 40 + 49 + F(9) = 89 + F(9)
  • F(9) = 9*9 + F(11) = 81 + F(11) = 81 + (11*11 + F(13)) = 81 + 121 + F(13) = 202 + F(13) = 202 + (13*13 + F(15)) = 202 + 169 + F(15) = 371 + F(15) = 371 + (15*15 + F(17)) = 371 + 225 + F(17) = 596 + F(17) = 596 + (17*17 + F(19)) = 596 + 289 + F(19) = 885 + F(19) = 885 + (19*19 + F(21)) = 885 + 361 + F(21) = 1246 + F(21) = 1246 + (21*21 + F(23)) = 1246 + 441 + F(23) = 1687 + F(23) = 1687 + (23*23 + F(25)) = 1687 + 529 + F(25) = 2216 + F(25) = 2216 + (25*25 + F(27)) = 2216 + 625 + F(27) = 2841 + F(27) = 2841 + 27*27 + F(29) = 2841 + 729 + F(29) = 3570 + 29*29 + F(31) = 3570 + 841 + 31*31 + F(33) = 3570 + 841 + 961 + 33*33 + F(35) = 3570 + 841 + 961 + 1089 + 35*35 + F(37) = 3570 + 841 + 961 + 1089 + 1225 + 37*37 = 3570 + 841 + 961 + 1089 + 1225 + 1369 + F(39) = 9055 + F(39)

Используя код, получаем:

F(192) = 11

F(9) = 11

F(192) - F(9) = 11 - 11 = 0

Ответ: 0

ГДЗ по фото 📸
Подать жалобу Правообладателю

Похожие