В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
Агата1713
Агата1713
17.11.2021 22:25 •  Информатика

Дан рекурсивный алгоритм: procedure f(n: integer); begin writeln('*'); if n > 0 then begin f(n-2); f(n div 2) end end; сколько символов "звездочка" будет напечатано на экране при выполнении вызова f(7)?

Ответ:
erushevsascha
erushevsascha
29.09.2020 23:11
Пусть K(n) - количество звездочек, напечатанных при вызове F(n)
Тогда
K(n) = 1 { writeln('*') } + K(n-2) {вызов F(n-2) -> печатается еще K(n-2) звездочек} + K(n div 2) {F(n div 2)} при n > 0
и K(n) = 1 при n <= 0

Требуется найти K(7)

K(7) = 1 + K(5) + K(3)
K(5) = 1 + K(3) + K(2)
K(3) = 1 + K(1) + K(1)
K(2) = 1 + K(0) + K(1)
K(1) = 1 + K(-1) + K(0)
K(0) = K(-1) = 1 {0, -1 <= 0}

K(1) = 1 + 1 + 1 = 3
K(2) = 1 + 1 + 3 = 5
K(3) = 1 + 3 + 3 = 7
K(5) = 1 + 7 + 5 = 13
K(7) = 1 + 13 + 7 = 21

ответ: 21
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?