М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
EveChan
EveChan
23.07.2022 11:43 •  Информатика

Записан рекурсивный алгоритм f/ procedure f(n: integer); begin writeln(n); if n > 0 then begin f(n - 1); f(n - 3) end; end чему равна сумма всех чисел напечатанных на экране при выполнении вызова f5

👇
Ответ:
Арнур1234
Арнур1234
23.07.2022
Представим, что мы знаем ответ на вопрос "чему равна сумма всех выписанных чисел при выполнении вызова F(n)" для всех n < k. Попробуем понять, как найти ответ для n = k.

Что делает F(n)? Читаем текст программы: сначала выводит n, а потом (если n > 0) запускает F(n - 1) и F(n - 3). Обозначим S(n) - сумму всех чисел после вызова F(n), тогда (при n > 0) 
S(n) = n + S(n - 1) + S(n - 3)

Для неположительных n получаем, что S(n) = n (т.к. F(n) просто выводит n и завершает работу, не запуская никаких других F).

Остается только расписать, чему равно S(5)...
S(-2) = -2
S(-1) = -1
S(0) = 0
S(1) = 1 + S(0) + S(-2) = 1 + 0 - 2 = -1
S(2) = 2 + S(1) + S(-1) = 2 - 1 - 1 = 0
S(3) = 3 + S(2) + S(0) = 3 + 0 + 0 = 3
S(4) = 4 + S(3) + S(1) = 4 + 3 - 1 = 6
S(5) = 5 + S(4) + S(2) = 5 + 6 + 0 = 11

ответ. 11.



При исследовании рекурсивных алгоритмов бывает полезно понять, сколько вызовов функций делает программа (например, если рисовать дерево вызовов, это будет показывать количество "стрелочек" на этом дереве). Представим себе, что мы стали выполнять алгоритм на бумаге, попробуем понять, сколько чисел придется выписывать.
Если #(N) - число вызовов процедуры F при наивном вычислении F(N). Понятно, что #(N) = #(N - 1) + #(N - 3) (при N <= 0 #(N) = 1). Не задаваясь целью получить точную формулу для #(N), получим только оценку (на самом деле, весьма показательную).
Очевидно, что #(N - 1) >= #(N - 3), тогда #(N) >= 2 * #(N - 3).
Так как #(0) = 1, то #(3) >= 2 * #(0) = 2, #(6) >= 2 * #(3) >= 2^2, #(9) >= 2 * #(6) >= 2^3, и вообще #(3N) >= 2^N
Отсюда можно предположить, что #(N) растет не медленнее, чем 2^(N/3) >= 1.25^N. Если 1,25^N кажется медленно растущей функцией - это вовсе не так, для N = 100 (это немного, наверно?) получим число, большее миллиарда. Так что если не запоминать промежуточные результаты, результат будет считаться ооочень долго. S(N) также растет быстро, но это уже другая проблема.
4,8(72 оценок)
Открыть все ответы
Ответ:
Fidashka5616
Fidashka5616
23.07.2022
Начнем с утверждения, что это была блондинка, потому что таких утверждений два.
Если II сказал правду, то второе его утверждение ложно и блондинка была в шляпе. Тогда утверждение I о брюнетке - ложь. Это рассуждение иллюстрирует вторая сверху таблица.
В то же время, будет ложным утверждение IV об отсутствии очков и получается, что была блондинка в шляпе и в очках. В этом случае ложно утверждение III о том, что это была рыжая.
Удостоверяемся, что противоречий в цепочке рассуждений нет.
Окончательно: это была блондинка в шляпе и очках. Каждый свидетель дал одно истинное показание и одно ложное.

Прочие проверки можно не делать, считая задачу корректной.

Следователь шерлокхолмсов вёл опрос свидетелей. первый утверждал, что воровка была брюнеткой в шляпе
4,8(32 оценок)
Ответ:
alenalebedeva2
alenalebedeva2
23.07.2022
Довольно просто найти ответ, используя таблицу в Excel (см.файл).

В первом столбце таблицы ставим номер шага- от состояния до начала (нулевой шаг), до девятого шага.

В следующем столбце будем составлять слово для каждого шага.
Для нулевого шага оставляем пустую ячейку.
Для первого шага пишем такую формулу:
=СИМВОЛ(B4+64)&C3&C3
Эта формула составляет одну текстовую строку из трёх текстовых строк (символ "&" как раз выполняет соединение строк).
здесь B4 -адрес ячейки, находящейся слева от текущей (в ней содержится номер текущего шага).
Для первого шага, к номеру шага (1) прибавляется число 64 (получили 65), затем функция СИМВОЛ возвращает нам первую букву латинского алфавита (её код=65).
Для каждого следующего шага получаемый код будет увеличиваться на единицу, и функция будет возвращать по порядку следующие буквы алфавита (они идут по порядку, с кодами 65 - 90).
C3 -адрес ячейки, находящейся сверху от текущей (в ней содержится строка, полученная на предыдущем шаге).
Для первого шага берётся строка с нулевого шага (из пустой ячейки, то есть пустая строка).
Эта взятая строка дважды добавляется к предыдущему тексту (к букве алфавита).
Для каждого следующего шага, к букве будет дважды добавляться текстовая строка, полученная на предыдущем шаге.

Эту формулу надо скопировать во все ячейки столбца, с первого до девятого шага.

Затем, под этой таблицей, в любой ячейке ставим формулу, составляющую текстовую строку пароля:
=ПСТР(C12;1;1)&ПСТР(C12;511;1)&ПСТР(C12;6;1)&ПСТР(C12;258;1)&ПСТР(C12;68;1)
Здесь C12 -адрес ячейки, в которой содержится текстовая строка, полученная на последнем, девятом шаге.
Формула состоит из пяти функций ПСТР, каждая из них возвращает по одной букве пароля, затем буквы составляются в одну текстовую строку пароля, сцепляясь с символа "&".
Для функции ПСТР в скобках указаны через точку с запятой её аргументы: текстовая строка (у нас стоит ссылка на строку в ячейке C12); позиция извлекаемой буквы в строке (по задаче, используются пять позиций: 1, 511, 6, 258 и 68); количество извлекаемых букв (одна).

В итоге, мы получаем текстовую строку пароля:
IADGE  (первой идёт большая буква i)

Также, я добавил третий столбец, где показывается длина текстовой строки, полученной на каждом шаге. Этот столбец не обязательный, я добавил просто для сведения.

Если эксель у вас не установлен, можно использовать его онлайн-версию (там нужно войти с учётной записью майкрософт), либо использовать бесплатные аналоги (например из OpenOffice). Есть и бесплатные онлайн аналоги экселя.
Но, в аналогах скорее чаще всего функции уже другие (в OpenOffice, например, вместо СИМВОЛ используется CHAR, а вместо ПСТР используется MID.
15. пароль для мистера фокса мистер фокс придумывает себе пароль. он хочет, чтобы он состоял из загл
4,5(27 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ