Ниже на языке прогаммирования паскаль записаны две рекурсивные функции (процедуры): 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. Осталось оформить ответ, сделав вид, что это не программная выдача, а "я таковой разумный, на бумажке расписал".
А "ненормальные люди" и в самом деле делают это вручную, не разумея, что ручной разбор рекурсии таковой длины - это глупость.
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
Спасибо огромное!!!!
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов