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

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

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

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

Задать свой вопрос
Вероника Алсофьева
А ответ есть ?
Iljuha Bichukov
17
1 ответ
Все обычные люди делают это так:

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

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

procedure G(n: integer) ;
begin
  Writeln('Вызов G(',n,') - **');
  //Write('**');
  If ngt;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. Осталось оформить ответ, сделав вид, что это не программная выдача, а "я таковой разумный, на бумажке расписал".

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


Ярослава Черногладова
Это задание ЕГЭ:(
Тоня Минаенко
У нас учительница сама не разумеет, как это сделать, а я и подавно не могу осознать
Semjon Vendjukov
А почему программа считает F(7) если надобно чтоб n было больше 10? Сможете объяснить?
Elena Chubakina
Спасибо огромное!!!!
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт