Помощь - Поиск - Пользователи - Календарь
Полная версия: Рекурсия и графика
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Askid.BY
Знаяит вопрос такой, а точнее задача:
Составить рекурсивное определение функции(процедуры) сформировывающую матрицу вида
*****
***
*
Как обычно она решается я знаю,но как рекурсивно?
Код
uses
crt;
var
i:byte;
n,x:integer;
begin
writeln('Vvesti znachok');
readln(n);
ClrScr;
i:=3;
if i=3 then writeln(n,n,n,n,n);
i:=i-1;
if i=2 then writeln(' ',n,n,n );
i:=i-1;
if i=1 then writeln(' ',n);
if i=0 then writeln ;
readkey;
end.


И ещё если нетрудно какие мысли по задаче:
Составить программу вывода на экран окружности.При нажатии клавиши КУРСОР вправо окружность вращается вокруг своего диаметра слева направо,при нажатии клавиши КУРСОР влево - справа налево.
APAL
Код

Procedure GoGo(ii : Integer);
var j : Byte;
Begin
  If ii>0 then
  Begin
    For j:=1 to ii do Write('*');
                Writeln;
    GoGo(ii-2);
  End;
End;


Что значит "вращается вокруг диаметра"? Может вокруг оси Y?
klem4
ну во первых твой вариант тоже странновытый какой-то

вот обычный не рукурсивный вариант, щас сделаем с рекурсией :

Код

uses crt;

type
   TMx = array[1..10, 1..10] of integer;
var
   mx : TMx;
   t : integer;

procedure Input(var x : TMx; n : integer);
var
   i,j : integer;
begin
   randomize;
   for i := 1 to n do begin
      writeln;
      for j := 1 to n-i+1 do begin
         x[i,j] := random(10);
         write(x[i,j]:2,' ');
      end;
   end;

end;
begin
   clrscr;
   Input(mx,10);
   readln
end.


а вот и Apal с рекурсией подоспел ;)
опоздал)
volvo
procedure print(count: integer; ch: char);
var i: integer;
begin
if count >= 1 then begin

for i := 1 to count do write(ch);
writeln;

print(count - 2, ch);

end;
end;

begin
print(5, '*');
end.



P.S. При чем здесь графика? blink.gif
APAL
По моему я поторопился... rolleyes.gif

klem4 : И я ... зато у автора теперь куча вариантов разных smile.gif)
Askid.BY
Да но в данных случаях получается
*****
***
*
а надо(см в прикреплённом файле)
klem4
получается так, как ты дал в первоначальном задании mad.gif
volvo
var
n: integer;

procedure print(count: integer; ch: char);
var i: integer;
begin
if count >= 1 then begin

for i := 1 to (n - count) div 2 do write(' ');
for i := 1 to count do write(ch);
writeln;

print(count - 2, ch);

end;
end;

begin
n := 5;
print(n, '*');
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.