Объяснение:
def amount(a, b):
if b > 0:
a += 1
b -= 1
return summ(a, b)
else:
return a
n = int(input())
m = int(input())
print(summ(m, n))
Сначала проверяется условие b > 0. Это базовый случай, то есть случай, когда рекурсия заканчивается. Потом идёт присваивание первому числу единицы, а из b она вычитается. Прибавление единицы числу a будет ровно b раз, то есть к числу а прибавится значение числа b. И когда уже b равно нулю, то происходит выход из рекурсии, и функция возвращает число a, то есть сумму чисел a и b.
Програмка не работает с отрицательными числами, мне лень думать :3
var a:array[1..n,1..n] of integer;
i,j,s1,s2:integer;
b:boolean;
begin
for i:=1 to n do
for j:=1 to n do read(a[i,j]);b:=true;
s1:=0;
for j:=1 to n do s1:=s1+a[1,j];
for i:=1 to n do
begin
s2:=0;
for j:=1 to n do s2:=s2+a[i,j];
if s1<>s2 then b:=false;
s2:=0;
for j:=1 to n do s2:=s2+a[j,i];
if s1<>s2 then b:=false;
end;
if b then writeln('Матрица - магический квадрат')
else writeln('Матрица не является магическим квадратом');
end.
Пример 1:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9Матрица - магический квадрат
Пример 2:
15 24 1 8 17
5 23 7 14 16
22 4 6 13 20
10 12 19 21 3
11 18 2 25 9
Матрица не является магическим квадратом