Оправдано ли использование рекурсии в реализации метода А. А. Карацубы и можно ли принципиально (не моделируя программно стек вызовов) заменить ее циклом?
Var a: array [0..10] of integer; i, m: integer; begin m := 1; for i := 0 to 10 do begin a[i] := random(50) - 25; writeln('[', i, '] => ', a[i]); end;
for i := 0 to 10 do if (a[i] mod 2 = 1) then m := m * a[i]; writeln(m); end.
2) var a: array [0..10] of integer; i, m: integer; begin for i := 0 to 10 do begin a[i] := random(50) - 25; writeln('[', i, '] => ', a[i]); end; for i := 0 to 10 do if ((a[i] > a[m]) and (a[i] < 0)) then m := i;
writeln('[', m, '] => ', a[m]); end.
Можно и меньше циклов, это я для наглядности, чтобы всё не смешивалось =)
Var a: array [0..10, 0..50] of integer; b: array [0..10] of integer; i, j: integer; begin for i := 0 to 10 do begin for j := 0 to 50 do begin a[i, j] := random(50); write(a[i, j]:3); end; writeln(); end; for i := 0 to 10 do for j := 0 to 50 do b[i] := b[i] + a[i, j]; for i := 0 to 10 do write(b[i], ' '); end.
Можно было, конечно, поменьше циклов, но так нагляднее будет =)
i, m: integer;
begin
m := 1;
for i := 0 to 10 do
begin
a[i] := random(50) - 25;
writeln('[', i, '] => ', a[i]);
end;
for i := 0 to 10 do
if (a[i] mod 2 = 1) then m := m * a[i];
writeln(m);
end.
2)
var a: array [0..10] of integer;
i, m: integer;
begin
for i := 0 to 10 do
begin
a[i] := random(50) - 25;
writeln('[', i, '] => ', a[i]);
end;
for i := 0 to 10 do
if ((a[i] > a[m]) and (a[i] < 0)) then
m := i;
writeln('[', m, '] => ', a[m]);
end.
Можно и меньше циклов, это я для наглядности, чтобы всё не смешивалось =)
b: array [0..10] of integer;
i, j: integer;
begin
for i := 0 to 10 do
begin
for j := 0 to 50 do
begin
a[i, j] := random(50);
write(a[i, j]:3);
end;
writeln();
end;
for i := 0 to 10 do
for j := 0 to 50 do
b[i] := b[i] + a[i, j];
for i := 0 to 10 do
write(b[i], ' ');
end.
Можно было, конечно, поменьше циклов, но так нагляднее будет =)