
Вопрос задан 29.07.2023 в 14:15.
Предмет Информатика.
Спрашивает Алексеев Дима.
ОЧЕНЬ СРОЧНО, ПОМОГИТЕ, ПОЖАЛУЙСТА! Ниже записан рекурсивный алгоритм F. Чему равна сумма
напечатанных на экране чисел при выполнении вызова F(10)? procedure F (n:integer); begin if n > 2 then begin writeln (n); F (n-3); F (n-4) end end;

Ответы на вопрос

Отвечает Капустина Даша.
Для удобства прономерую строки:
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.
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.



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Давайте разберемся, как работает данный рекурсивный алгоритм F.
Когда вызывается процедура F с аргументом n, она делает следующее:
- Если n > 2, то процедура выводит значение n на экран с помощью команды writeln (n).
- Затем процедура вызывает саму себя дважды: F(n-3) и F(n-4).
Посмотрим, как процедура F будет работать при вызове F(10):
- F(10) будет выполнено и выведет на экран число 10.
- Затем F(7) будет вызвано (так как 10-3=7) и выведет на экран число 7.
- F(6) будет вызвано (так как 10-4=6) и выведет на экран число 6.
- Затем F(7) вызовет F(4) и F(3).
- F(4) выведет на экран число 4.
- F(3) выведет на экран число 3.
Таким образом, когда вызывается F(10), на экран будут напечатаны следующие числа: 10, 7, 6, 4 и 3.
Сумма этих чисел: 10 + 7 + 6 + 4 + 3 = 30.


Похожие вопросы
Топ вопросов за вчера в категории Информатика

Информатика 566

Информатика 25

Информатика 22

Информатика 27

Информатика 34

Информатика 58

Информатика 63

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