Предмет: Информатика,
автор: g1743740
Рекурсивный алгоритм.
Найти сумму чисел, полученных при вызове F(1).
Ответ: 530.
Объясните принцип решения, прошу.
Приложения:

Аноним:
чушь какая-то. Кто это будет руками такую рекурсию прокручивать, 91 число на выдаче. А если программно подсчитать, то надо просто вставить вместо печати суммирование в глобальную переменную.
Ответы
Автор ответа:
1
Трассировка вызовов, печатаемых значений и подсчет суммы
var
s:integer;
procedure F(n:integer);
begin
Write(' F(',n,') ');
Write(n,' '); s:=s+n;
if n<6 then begin
Write(n); s:=s+n;
F(n+1);
F(n+2);
F(2*n)
end
end;
begin
s:=0;
F(1);
Writeln(#13#10,s)
end.
Результат выполнения программы:
F(1) 1 1 F(2) 2 2 F(3) 3 3 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(3) 3 3 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(2) 2 2 F(3) 3 3 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8
530
var
s:integer;
procedure F(n:integer);
begin
Write(' F(',n,') ');
Write(n,' '); s:=s+n;
if n<6 then begin
Write(n); s:=s+n;
F(n+1);
F(n+2);
F(2*n)
end
end;
begin
s:=0;
F(1);
Writeln(#13#10,s)
end.
Результат выполнения программы:
F(1) 1 1 F(2) 2 2 F(3) 3 3 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(3) 3 3 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(2) 2 2 F(3) 3 3 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8 F(4) 4 4 F(5) 5 5 F(6) 6 F(7) 7 F(10) 10 F(6) 6 F(8) 8
530
writeln(n);
F(n+2); у Вас нет подсуммирования, хотя значение выводится.
Похожие вопросы
Предмет: Русский язык,
автор: za0001
Предмет: Русский язык,
автор: 909580154polina
Предмет: Русский язык,
автор: Ginger11111
Предмет: Математика,
автор: bondareff
Предмет: Английский язык,
автор: adadadqdqdqwdqdqdwqd