3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const n=10;
type myarray=array[1..n]of integer;
const a:myarray=(4,3,5,-1,2,9,4,8,5,3);
function min(x,y:integer):integer;
begin
if x>y then min:=y
else
min:=x;
end;
function pmin(n,b:integer):integer;
begin
if n=2 then
pmin:=min(n,a[1])
else
pmin:min(a[n],pmin(n-1,a[n]));
end;
begin
writeln('min element massiva=',pmin(n,a[n]));
end.
помогите разобраться как передаются данные
от функции в функцию на рекурсивном подъеме
то есть когда программа начинает вычислять
наименьший элемент
рекурсия вычисление наименьшего значения в массиве
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
На дельфи пишите?
Предлагаю сделать следующим образом:
бросаем кнопку на форму и пишем в ее обработчик следующее:
Открываем окно дебаггера:
View \ Debug Windows\ Watches
добавляем в него все переменные что используются в данном коде (x,y,min,pmin,n,a[n], b), ставим breakpoint на ShowMessage и вперед! все по шагам замечательно видно
Предлагаю сделать следующим образом:
бросаем кнопку на форму и пишем в ее обработчик следующее:
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
const n=10;
type myarray=array[1..n]of integer;
const a:myarray=(4,3,5,-1,2,9,4,-8,5,3);
function min(x,y:integer):integer;
begin
if x>y then min:=y
else
min:=x;
end;
function pmin(n,b:integer):integer;
begin
if n=2 then
pmin:=min(n,a[1])
else
pmin:=min(a[n],pmin(n-1,a[n]));
end;
begin
ShowMessage(IntToStr(pmin(n,a[n])));
end;
View \ Debug Windows\ Watches
добавляем в него все переменные что используются в данном коде (x,y,min,pmin,n,a[n], b), ставим breakpoint на ShowMessage и вперед! все по шагам замечательно видно
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

для меня delphi темный лес , знаю
что это мне нужно однако не пойму
как и подступиться
может посоветуете с чего начать
изучение delphi может литература или youtube или...
там в коде у меня кстати ,ошибка
prim:=min(n,a[1]);
правильнее написать
prim:=min(a[n],a[1]);
иначе при массиве из 3 элементов
наибольший не вычисляется
а код я скатал где-то пробовал сам разобрать
что это мне нужно однако не пойму
как и подступиться
может посоветуете с чего начать
изучение delphi может литература или youtube или...
там в коде у меня кстати ,ошибка
prim:=min(n,a[1]);
правильнее написать
prim:=min(a[n],a[1]);
иначе при массиве из 3 элементов
наибольший не вычисляется
а код я скатал где-то пробовал сам разобрать
Мда... Искать минимум рекурсией... И чему сейчас учат?
Dr_Grizzly, вопрос на устный счет - при каком N вылезет Stack Overflow при дефолтных параметрах стека?
Dr_Grizzly, вопрос на устный счет - при каком N вылезет Stack Overflow при дефолтных параметрах стека?
It's a long way to the top if you wanna rock'n'roll