Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
заменить (v, w)
нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение "истина", в противном случае возвращает значение "ложь".
Дана программа для исполнителя Редактор:
ПОКА нашлось (111)
заменить(111, 2)
заменить(222, 3)
заменить(333, 1)
КОНЕЦ ПОКА
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 120 единиц?
1) procedure F (n:integer);
2) begin
3) if n > 2 then begin
4) writeln (n);
5) F (n-3);
6) F (n-4)
7) end
8) end;
-первый вызов- со входным параметром n=10
-в строке 3 проверяется, что n больше двух,
-так как n действительно больше двух, то выполняются три следующие строки № 4,5,6 (а строка 7 -это указатель конца блока, выполняемого при истинности проверки)
-строка 4 печатает значение n, то есть 10
-строка 5 вызывает этот алгоритм вновь, со входным параметром 7
-строка 6 опять вызывает алгоритм, со входным параметром 6
И в каждом вызове будут ещё два вызова, со входными параметрами на три и четыре меньше, чем был
И так далее, каждый вызов будет вновь вызывать алгоритм, и печатать n до тех пор, пока n будет больше двух.
итак, получим ветвление вызовов, и вот значение n в каждом из них:
10
7 6
4 3 3 2
1 0 0 -1 0 -1
но, не все из этих n будут напечатаны, а только те, которые больше двух. если по порядку, то вот что будет напечатано:
10
7
4
3
6
3
сумма всех этих чисел равна 33
ответ: 33.