Дан рекурсивный алгоритм
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln(n);
if n <5 then begin
F(n+1);
F(n*3)
end
end;
Найдите сумму чисел, которые будут выведены при вызове F(2)
Pascal

Для определения суммы чисел, которые будут выведены при вызове F(2), нужно развернуть рекурсию и записать все значения, которые выводятся на каждом этапе.
Начнем с вызова F(2):
F(2)
|- вывод: 2
|- F(3), потому что 2 < 5
| |- вывод: 3
| |- F(4), потому что 3 < 5
| | |- вывод: 4
| | |- F(5), потому что 4 < 5
| | | |- вывод: 5 (на этом этапе, так как 5 не меньше 5, рекурсивные вызовы заканчиваются)
| | |- F(12), потому что 4 < 5 (4 * 3 = 12; 12 не меньше 5, дополнительных вызовов не происходит)
| |- F(9), потому что 3 < 5 (3 * 3 = 9; 9 не меньше 5, дополнительных вызовов не происходит)
|- F(6), потому что 2 < 5 (2 * 3 = 6; 6 не меньше 5, дополнительных вызовов не происходит)
Итак, получаем следующую последовательность чисел: 2, 3, 4, 5, 12, 9, 6.
Теперь сложим все числа, чтобы получить сумму: 2 + 3 + 4 + 5 + 12 + 9 + 6 = 41.
При вызове F(2) будут выведены следующие числа:
2, 3, 9, 4, 12, 13, 39
Сумма этих чисел равна 82. Это можно получить, используя формулу:
