Вывести на экран рисунок с использованием рекурсии - 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.
Объяснение кода листинга программы
- В процедуре prn используется рекурсия для вывода на экран строки из символов
*и пробелов. Код выполняется несколько раз, в зависимости от значений переменных w и k. - Переменная i используется для итерации по циклам.
- Цикл for i := 1 to k выполняется k раз, выводя на экран символ
*k раз. - Затем выполняется цикл for i := 1 to w, который выводит на экран символ
w раз. - После этого снова выполняется цикл for i := 1 to k, который выводит на экран символ
*k раз. - Затем выводится символ новой строки.
- Если значение переменной w больше 2, то вызывается рекурсивно процедура prn с аргументами w-2 и k+1.
- Если значение переменной w меньше или равно 2, то выводятся символы
*2*(k+1) раз, а затем выводится символ новой строки. - После этого снова выполняются циклы for i := 1 to k и for i := 1 to w, как в предыдущих шагах.
- В конце выводится символ новой строки.
- Переменная n используется для проверки, является ли число четным и больше нуля, и считывается из ввода пользователя.
- Вызывается процедура prn с аргументами n и 1.
- Выводится символ новой строки.