Язык программирования Pascal. Процедуры и функции. Рекурсия. Васильев В.В - 26 стр.

UptoLike

26
Текущие значения i и j изменяются на единицу. i=5, j=3.
Второй уровень рекурсии закончен, так как i>j.
Третьего уровня рекурсии для правой части массива не будет , так как j<a, а i=b.
Program Q_Sort;
Uses crt;
Const n=10;
Var x:array[1..n] of integer; i:integer;
Procedure Quick ( a,b: integer);
var s,r,i,j:integer;
begin
s:=x[(a+b) div 2]; i:=a; j:=b;
while i<=j do
begin
while x[i]<s do i:=i+1;
while x[j]>s do j:=j-1;
if i<=j then
begin
r:=x[i]; x[i]:=x[j]; x[j]:=r; i:=i+1; j:=j-1
end;
end;
if a<j then Quick(a,j);
if i<b then Quick(i,b);
end; {Quick}
Begin
Textbackground(7); Textcolor(blue); Clrscr;
for i:=1 to n do read(x[i]); readln; Quick(1,n);
for i:=1 to n do write(x[i],' '); readkey
End. {Q_Sort}
Рассмотрим математическую задачу, решение которой приводит к рекур -
сивному алгоритму.
Задача 4. Вычислите определитель заданной матрицы , пользуясь форму-
лой разложения по первой строке (матрица В получается вычеркиванием из А
первой строки и k-го столбца):
()
detdet
,
AAB
k
kk
k
n
=−
+
=
1
1
1
1
.
Составим рекурсивную функцию det, вычисляющую определитель det А
порядка n. Если n>1, то определитель det А раскладывается по первой строке.
Минор B
k1
элемента a
k1
получается копированием элементов матрицы А и сме-
щением элементов на одну строку вверх и на один столбец влево. При этом
элементы первой строки и k-го столбца теряются , а порядок определителя
уменьшается на единицу.
Если n=1, то определитель будет равен элементу а[1,1].
Константа n_max содержит порядок определителя . Тип Mas описывает
квадратную матрицу размера n_max x n_max. Переменные i и j используются как
счетчики циклов .