Вывести на экран рисунок с использованием рекурсии - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Вот задание: Дано натуральное чётное число n. Написать рекурсивную процедуру вывода на экран следующей картинки:

Решение задачи: «Вывести на экран рисунок с использованием рекурсии»

textual
Листинг программы
procedure prn(w, k: integer);
var i: integer;
begin
  for i := 1 to k do write('*');
  for i := 1 to w do write(' ');
  for i := 1 to k do write('*');
  writeln;
  if w > 2
    then prn(w - 2, k + 1)
    else begin
      for i := 1 to 2 * (k + 1) do write('*');
      writeln
    end;
  for i := 1 to k do write('*');
  for i := 1 to w do write(' ');
  for i := 1 to k do write('*');
  writeln;
end;
 
var n: integer;
begin
  repeat
    write('n is even and n > 0;  n = ');
    readln(n)
  until not odd(n) and (n > 0);
  prn(n, 1);
  readln
end.

Объяснение кода листинга программы

  1. В процедуре prn используется рекурсия для вывода на экран строки из символов * и пробелов. Код выполняется несколько раз, в зависимости от значений переменных w и k.
  2. Переменная i используется для итерации по циклам.
  3. Цикл for i := 1 to k выполняется k раз, выводя на экран символ * k раз.
  4. Затем выполняется цикл for i := 1 to w, который выводит на экран символ w раз.
  5. После этого снова выполняется цикл for i := 1 to k, который выводит на экран символ * k раз.
  6. Затем выводится символ новой строки.
  7. Если значение переменной w больше 2, то вызывается рекурсивно процедура prn с аргументами w-2 и k+1.
  8. Если значение переменной w меньше или равно 2, то выводятся символы * 2*(k+1) раз, а затем выводится символ новой строки.
  9. После этого снова выполняются циклы for i := 1 to k и for i := 1 to w, как в предыдущих шагах.
  10. В конце выводится символ новой строки.
  11. Переменная n используется для проверки, является ли число четным и больше нуля, и считывается из ввода пользователя.
  12. Вызывается процедура prn с аргументами n и 1.
  13. Выводится символ новой строки.

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы