
28.05.2013, 06:04
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Цитата:
Сообщение от apofeozsun
Не понимаю каскадную рекурсию, написал линейную. Помогите переделать в каскадную.
Задание: Для заданного одномерного массива B из N элементов найти значение минимального элемента массива. Рекурсивную функцию применять каждый раз отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.
|
Подозреваю, что имеется в виду, что у тебя 2 рекурсивных вызова для каждой итерации.
что-то типа:
Код:
function FindMin(const B : Array Of Integer) : Integer;
var
B1, B2 : Array Of Integer;
I : Integer;
begin
If Length(B) = 1
Then Result := B[Low(B)]
Else
Begin
SetLength(B1,Length(B) div 2);
SetLength(B2,Length(B) - Length(B) div 2);
For I := Low(B) To High(B) Do
If I <=Length(B1) Then B1[i] := B[i] Else B2[I-Length(B1)] := B[i];
Result := Min(FindMin(B1),FindMin(B2));
SetLength(B1,0);
SetLength(B2,0);
End;
end;
|