Информатика 10 класс Рекурсивные алгоритмы Заранее спасибо Дан рекурсивный алгоритм: procedure
F(n: integer); begin writeln(n); if n < 5 then begin F(n+1); F(n+2); F(n*3) end end;Найдите сумму чисел, которые будут выведены при вызове F(2). Ответы на вопрос
Ответ:
79
Объяснение:
На экран будут выводится числа, с которыми будет вызвана функция.
F(2) вызовет внутри себя F(2+1), F(2+2), F(2*3), то есть F(3), F(4), F(6)
F(3) вызовет F(4), F(5), F(9)
F(4) вызовет F(5), F(6), F(12)
От других чисел функция ничего не вызовет ( из-за условия n < 5).
Теперь посчитаем все. Начнем с F(4), потому что результаты вызовов в ней понятны. Сумма выведенных чисел F(4) равна 4 + 5 + 6 + 12 = 27.
F(3) = 3 + F(4) + 5 + 9 = 3 + 27 + 5 + 9 = 44
F(2) = 2 + F(3) + F(4) + 6 = 2 + 44 + 27 + 6 = 79
Для нахождения суммы чисел, которые будут выведены при вызове F(2), нужно выполнить рекурсивный алгоритм, начиная с n = 2 и сложить все выведенные числа. Давайте разберемся, как это происходит.
При вызове
F(2):- Выводится число 2.
- Вызывается
F(2+1), то естьF(3). - Вызывается
F(2+2), то естьF(4). - Вызывается
F(2*3), то естьF(6).
При вызове
F(3):- Выводится число 3.
- Вызывается
F(3+1), то естьF(4). - Вызывается
F(3+2), то естьF(5). - Вызывается
F(3*3), то естьF(9).
При вызове
F(4):- Выводится число 4.
- Вызывается
F(4+1), то естьF(5). - Вызывается
F(4+2), то естьF(6). - Вызывается
F(4*3), то естьF(12).
При вызове
F(5):- Выводится число 5.
- Вызывается
F(5+1), то естьF(6). - Вызывается
F(5+2), то естьF(7). - Вызывается
F(5*3), то естьF(15).
При вызове
F(6):- Выводится число 6.
- Вызывается
F(6+1), то естьF(7). - Вызывается
F(6+2), то естьF(8). - Вызывается
F(6*3), то естьF(18).
При вызове
F(7):- Выводится число 7.
- Вызывается
F(7+1), то естьF(8). - Вызывается
F(7+2), то естьF(9). - Вызывается
F(7*3), то естьF(21).
При вызове
F(8):- Выводится число 8.
- Вызывается
F(8+1), то естьF(9). - Вызывается
F(8+2), то естьF(10). - Вызывается
F(8*3), то естьF(24).
При вызове
F(9):- Выводится число 9.
- Вызывается
F(9+1), то естьF(10). - Вызывается
F(9+2), то естьF(11). - Вызывается
F(9*3), то естьF(27).
При вызове
F(10):- Выводится число 10.
- Вызывается
F(10+1), то естьF(11). - Вызывается
F(10+2), то естьF(12). - Вызывается
F(10*3), то естьF(30).
Теперь сложим все числа, которые были выведены:
2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 9 + 10 + 11 + 10 + 11 + 12 + 10 + 12 + 27 + 10 + 30 = 213.
Сумма чисел, которые будут выведены при вызове F(2), равна 213.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
