Ниже ** языке прогаммирования паскаль записаны две рекурсивные функции (процедуры): F и...

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

Ниже на языке прогаммирования паскаль записаны две рекурсивные функции (процедуры): F и G. Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(20)?
Procedure F(n: integer) ; forward;
Procedure G(n: integer) ; forward;

procedure F(n: integer) ;
Begin
Write ('*');
If n > 10 then F(n-2) else G(n);
End;

Procedure G(n: integer) ;
Begin
Write ('**');
If n > 1 then F(n-3);
End;
Обьясните пожалуйста, как это делать, если можете, то распишите пожалуйста подробно.


Информатика (76 баллов)
оставил комментарий Одаренный (4.0k баллов)

А ответ есть ?

оставил комментарий (76 баллов)

17

Дан 1 ответ
0 голосов
БОГ (150k баллов)
 
Правильный ответ
Все нормальные люди делают это так:

procedure F(n:integer); forward;
procedure G(n:integer); forward;

procedure F(n:integer);
begin
  Writeln('Вызов F(',n,') - *');
  //Write('*');
  If n>10 then F(n-2) else G(n);
  Writeln('Завершение F(',n,')')
end;

procedure G(n: integer) ;
begin
  Writeln('Вызов G(',n,') - **');
  //Write('**');
  If n>1 then F(n-3);
  Writeln('Завершение G(',n,')')
end;

begin
  F(20)
end.

Результат
Вызов F(20) - *
Вызов F(18) - *
Вызов F(16) - *
Вызов F(14) - *
Вызов F(12) - *
Вызов F(10) - *
Вызов G(10) - **
Вызов F(7) - *
Вызов G(7) - **
Вызов F(4) - *
Вызов G(4) - **
Вызов F(1) - *
Вызов G(1) - **
Завершение G(1)
Завершение F(1)
Завершение G(4)
Завершение F(4)
Завершение G(7)
Завершение F(7)
Завершение G(10)
Завершение F(10)
Завершение F(12)
Завершение F(14)
Завершение F(16)
Завершение F(18)
Завершение F(20)

Считаем звездочки, их 17. Осталось оформить ответ, сделав вид, что это не программная выдача, а "я такой умный, на бумажке расписал".

А "ненормальные люди" и в самом деле делают это вручную, не понимая, что ручной разбор рекурсии такой длины - это глупость.


оставил комментарий (76 баллов)

Это задание ЕГЭ:(

оставил комментарий (76 баллов)

У нас учительница сама не понимает, как это сделать, а я и подавно не могу понять

оставил комментарий (76 баллов)

А почему программа считает F(7) если надо чтобы n было больше 10? Можете объяснить?

оставил комментарий (76 баллов)

Спасибо большое!!!!

...