• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Максимальный элемент массива, рекурсия

avatar76

Ученик
Регистрация
27 Фев 2017
Сообщения
3
Реакции
0
Баллы
0
Максимальный элемент массива, рекурсия

Решить задачу с применением рекурсии и без неё
Найти максимальный элемент в массиве a[1...n], используя соотношение max (a[1...n])=max (max (a[1...n-1]), an)

Вот через функции , а нужно ещё составить через процедуры и объединить в одну программу

PHP:
type mas=array[1..50]of integer;  
var a:mas;  
n,i:integer;  
function Max(n:integer):integer;  
var w:integer;  
begin  
if n>1 then  
begin  
w:=Max(n-1);  
if a[n]<w then Max:=w  
else Max:=a[n]  
end  
else Max:=a[1]  
end;  
begin  
randomize;  
write('Razmer massiva A n=');  
readln(n);  
writeln('Massiv A:');  
for i:=1 to n do  
begin  
a[i]:=random(20);  
write(a[i],' ');  
end;  
writeln;  
write('max=',Max(n));  
readln  
end.
 
Вот через функции , а нужно ещё составить через процедуры и объединить в одну программу
Да пожалуйста. Заодно "причесал" малость:
Код:
Const
 Nmax=50;

Type
 mas=array[1..Nmax] of integer;

Var
 a:mas;
 n,i,Maxim:integer;

function Max(Am:mas; nm:integer):integer;
var w:integer;
begin
 if nm>1 then
  begin
   w:=Max(Am,nm-1);
   if Am[nm]<w then Max:=w else Max:=Am[nm];
  end
 else Max:=Am[1]
end;

Procedure MaxP(Am:mas; nm:integer; var Mmxx:integer);
var w:integer;
begin
 if nm>1 then
  begin
   MaxP(Am,nm-1,w);
   if Am[nm]<w then Mmxx:=w else Mmxx:=Am[nm];
  end
 else Mmxx:=Am[1]
end;

Begin
 Randomize;
 repeat
  write('Razmer massiva A n = ');
  readln(n);
  if n>Nmax then writeln('Wrong: n must be < ',Nmax+1);
 until n<=Nmax;
 writeln('Massiv A:');
 for i:=1 to n do
  begin
   a[i]:=random(20);
   write(a[i]:4);
  end;
 writeln;
 writeln(' Function: max = ',Max(a,n));
 MaxP(a,n,Maxim);
 writeln('Procedure: max = ',Maxim);
 readln
End.
 
Назад
Сверху