2.
Рекурсия. Имитация работы цикла
Мы увидели, что рекурсия - это повторное выполнение содержащихся команд в подпрограмме. А это в свою очередь аналогично работе цикла. Существуют языки программирования, в которых конструкция цикла отсутствует вовсе, например, Пролог.
Попробуем сымитировать работу цикла for.
Цикл for содержит переменную-счетчик шагов. В рекурсивной подпрограмме такую переменную можно передавать в качестве параметра.
//Процедура LoopImitation() с двумя параметрами
//Первый параметр – счетчик шагов, второй параметр – общее количество шагов
procedure LoopImitation(i, n: integer);
begin
writeln('Hello N ', i); // Оператор, который необходимо повторить при любом значении i
if i < n then //Пока счетчик цикла не станет равным значению n,
LoopImitation(i + 1, n); //вызываем новый экземпляр процедуры, с параметром i+1 (переход к следующему значению i)
end;
Изучите программу, приведенную ниже и оформите в основной программе вызов процедуры с параметрами i=1, n=10
//Процедура LoopImitation() с двумя параметрами
//Первый параметр – счетчик шагов, второй параметр – общее количество шагов
procedure LoopImitation(i, n: integer);
begin
writeln('Hello N ', i); // Оператор, который необходимо повторить при любом значении i
if i < n then //Пока счетчик цикла не станет равным значению n,
LoopImitation(i + 1, n); //вызываем новый экземпляр процедуры, с параметром i+1 (переход к следующему значению i)
end;
begin
// здесь необходимо оформить вызов процедуры с параметрами i=1, n=10
end.
Запрещенные операторы: for;while;until
Вставьте недостающие фрагменты кода
Pascal
1 |
procedure LoopImitation(i, n: integer);
|
2 |
begin
|
3 |
writeln('Hello N ', i);
|
4 |
if i < n then
|
5 |
LoopImitation(i + 1, n);
|
6 |
end;
|
7 |
|
8 |
begin
|
9 |
|
10 |
end.
|