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
Вставьте недостающие фрагменты кода
Java
1 |
import java.util.Scanner;
|
2 |
public class Main {
|
3 |
static void LoopImitation(int i, int n)
|
4 |
{
|
5 |
System.out.println("Hello N " + i);
|
6 |
if (i<n)
|
7 |
LoopImitation(i+1, n);
|
8 |
}
|
9 |
public static void main(String[] args) {
|
10 |
|
11 |
}
|
12 |
}
|