03.04.2015, 04:18
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,050
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Интересная задачка на 10 мин.
Как-то так:
Код:
uses Math;
function F(Z : Double; Idx : Integer) : Double;
begin
Result := Sin(Sqr(Z)) - Z/(Idx+2);
end;
function FindMaxF(A : Array Of Double; ALow, AHigh : Integer) : Double;
begin
If ALow = AHigh
Then Result := F(A[ALow],ALow)
Else Result := Max(FindMaxF(A,ALow,ALow + (AHigh-ALow) div 3),FindMaxF(A,(ALow + (AHigh-ALow) div 3) + 1,AHigh));
end;
// Проверка.
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
A : Array [1..9] Of Double;
begin
Memo1.Clear;
For I := Low(A) To High(A) Do A[i] := Random(100);
ShowMessage(FloatToStr(FindMaxF(A,Low(A),High(A))));
end;
|