, .
, .
.
: - -.
, , .
:
Type
TStrProc=procedure(n:integer; var S:string);{ -
}
TPr=procedure; { - }
TFunc=function(a, b:integer):integer; { -
}
var ps: TstrProc; { }
p: Tpr;
f1,f2: TFunc;
.
:
1) , , f1:=FMin; FMin ;
FMin.
2) , , f2:= f1;
:
( ) . .
f1:=FMin(1,2) - : ‑ , integer .
function FMin(a,b: integer): integer;
begin if a<b
then Result:= a
else Result:= b
end;
function FMax(a,b: integer): integer;
begin if a>b
then Result:= a
else Result:= b
end;
var x,y:integer;
begin
f1:=FMin; // FMin
x:=f1(1,2); // Fmin f1, x 1
f2:=FMax; // FMax
y:=f2(1,2); // Fmax f2 y 2
writeln(x, , y)
end.
f1(1,2) FMin(1,2) .
. . .
, .
(callback).
function MinMax(i,j:integer; f: TFunc): integer; //f ‑
|
|
begin
Result:= f(i,j); //
end;
begin
res:=MinMax(x,y,FMin);// MinMax. FMin
end.
(, ).
, , , ( )
n!, n . n!=1×2×...×n.
F:=1; for i:=1 to n do F:=F*i.
:
{1} 0!=1;
{2} n!=n×(n-1)!, n>0.
{2} n! (n-1)! .. , 0!, {1}. :
3!=3×2!, 2!=2×1!, 1!=1×0!, 0!=1. , , :
1!=1×1=1, 2!=2×1!=2×1=2, 3!=3×2!=3×2=6
, .
, .
, .
, :
function RF(n:integer):integer;
begin
if n=0 then RF:=1
else RF:=n*RF(n-1)
end;
.
.
.
.
RF , 1 , 0. , n=3:
0, , . , .. . .