Паскаль procedure F(n: integer); begin if n <= 5 then begin F(n + 2); writeln (n); F(n +...

0 голосов
135 просмотров

Паскаль
procedure F(n: integer);
begin
if n <= 5 then<br> begin
F(n + 2);
writeln (n);
F(n + 3)
end
end

Чему равна сумма всех чисел, напечатанных на экране при выполнении
вызова F(l)? (И КАК)


Информатика (31 баллов) | 135 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
Ответ: 13.
А получается он вот так:

procedure F(n:integer);
begin
  Writeln('Вызов F(',n,')');
  if n <= 5 then begin<br>    F(n + 2);
    writeln('Процедура вывела ',n);
    F(n + 3)
    end
end;

begin
  f(1)
end.

Результат работы программы:
Вызов F(1)
Вызов F(3)
Вызов F(5)
Вызов F(7)
Процедура вывела 5
Вызов F(8)
Процедура вывела 3
Вызов F(6)
Процедура вывела 1
Вызов F(4)
Вызов F(6)
Процедура вывела 4
Вызов F(7)


(142k баллов)
0

Откуда от Вызов F(8)
Процедура вывела 3? а от Вызов F(4)
Вызов F(6)
Процедура вывела 4

0

Откуда? От рекурсии, конечно же!