Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-2);
F(n-2);
F(n div 2);
end
end;
Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(6)?
33) Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
F(n-3);
F(n div 2);
end
end;
Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?
2005 : 8 = 250, остаток 5
250 : 8 = 31, остаток 2
31 : 8 = 3, остаток 7
3 : 8 = 0, остаток 3
Выписываем остатки в обратном порядке: 3725
В пятеричную
2005 : 5 = 401, остаток 0
401 : 5 = 80, остаток 1
80 : 5 = 16, остаток 0
16 : 5 = 3, остаток 1
3 : 5 = 0, остаток 3
Выписываем остатки в обратном порядке: 31010
В двоичную
2005 : 2 = 1002, остаток 1
1002 : 2 = 501, остаток 0
501 : 2 = 250, остаток 1
250 : 2 = 125, остаток 0
125 : 2 = 62, остаток 1
62 : 2 = 31, остаток 0
31 : 2 = 15, остаток 1
15 : 2 = 7, остаток 1
7 : 2 = 3, остаток 1
3 : 2 = 1, остаток 1
1 : 2 = 0, остаток 1
Выписываем остатки в обратном порядке: 11111010101
begin
var b:array[,] of integer:=((5,8,7,3),(-2,0,6,9),(2,1,12,4));
Writeln('Массив B: ',b);
var n:=b.GetLength(0);
var m:=b.GetLength(1);
var imax:=0; var jmax:=0;
var imin:=0; var jmin:=0;
for var i:=0 to n-1 do
for var j:=0 to m-1 do
if b[i,j]>b[imax,jmax] then begin imax:=i; jmax:=j end
else
if b[i,j]<b[imin,jmin] then begin imin:=i; jmin:=j end;
Swap(b[imin,jmin],b[imax,jmax]);
Writeln('Результирующий массив: ',b)
end.
Тестовое решение:
Массив B: [[5,8,7,3],[-2,0,6,9],[2,1,12,4]]
Результирующий массив: [[5,8,7,3],[12,0,6,9],[2,1,-2,4]]