2.
Рекурсия. Имитация работы цикла
Рекурсия. Имитация работы цикла
Мы увидели, что рекурсия - это повторное выполнение содержащихся команд в подпрограмме. А это в свою очередь аналогично работе цикла. Существуют языки программирования, в которых конструкция цикла отсутствует вовсе, например, Пролог.
Попробуем сымитировать работу цикла
for.
Цикл
for содержит переменную-счетчик шагов. В рекурсивной подпрограмме такую переменную можно передавать в качестве параметра.
// Процедура LoopImitation() с двумя параметрами.
// Первый параметр – счетчик шагов, второй параметр – общее количество шагов.
void LoopImitation(int i, int n)
{
cout << "Hello N " << i << endl; // Оператор, который необходимо повторить при любом значении i
if (i < n) // Пока счетчик цикла не станет равным значению n,
{ // вызываем новый экземпляр процедуры, с параметром i+1 (переход к следующему значению i).
LoopImitation(i + 1, n);
}
}
Изучите программу, приведенную ниже и оформите в основной программе вызов процедуры с параметрами
i=1,
n=10.
#include <iostream>
using namespace std;
//Процедура LoopImitation() с двумя параметрами.
//Первый параметр – счетчик шагов, второй параметр – общее количество шагов.
void LoopImitation(int i, int n)
{
cout << "Hello N " << i << endl; // Оператор, который необходимо повторить при любом значении i.
if (i < n) // Пока счетчик цикла не станет равным значению n,
{ // вызываем новый экземпляр процедуры, с параметром i+1 (переход к следующему значению i).
LoopImitation(i+1, n);
}
}
main()
{
// здесь необходимо оформить вызов процедуры с параметрами i=1, n=10.
}
Запрещенные операторы: for;while;until
Вставьте недостающие фрагменты кода
C++
| 1 |
#include <iostream>
|
| 2 |
using namespace std;
|
| 3 |
void LoopImitation(int i, int n)
|
| 4 |
{
|
| 5 |
cout << "Hello N " << i << endl;
|
| 6 |
if (i < n)
|
| 7 |
LoopImitation(i+1, n);
|
| 8 |
}
|
| 9 |
main() {
|
| 10 |
|
| 11 |
}
|