М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
НастМал
НастМал
25.05.2021 21:14 •  Информатика

Рекурсивная сумма Запишите рекурсивную функцию, вычисляющую сумму целых чисел m и n, в которой из арифметических операций используется только прибавление и вычитание единицы.

В данной задаче запрещено использовать циклы, массивы. Вы обязаны решить задачу с рекурсивной функции.

Входные данные

Дано два целых числа, по модулю не превосходящих 300.

Выходные данные

Выведите сумму.

Примеры
Ввод
Вывод
2 3
5

👇
Ответ:
salavatshakiro
salavatshakiro
25.05.2021

Объяснение:

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

4,4(49 оценок)
Открыть все ответы
Ответ:
поолра
поолра
25.05.2021

var

 a, s: real; //a - вводимое с клавиатуры число, s - сумма чисел

 

begin

  a:= 1;  //Присваиваем начальное значение, чтобы цикл выполнился

  s:= 0;

  while a <> 0 do   

  begin

    writeln('Введите положительное число');

    readln(a);

    if a < 0 then

    begin

      writeln('Введено не положительное число. Повторите ввод заново');

      continue; {Если а - не положительное число, вводим число заново}

    end;

    s:= s + a;

  end;

  writeln('Сумма:  ', s);  //Выводим сумму

end.

  

4,5(46 оценок)
Ответ:
наталья763
наталья763
25.05.2021

program exs;
var a : array [1..1000] of integer;
n, i : integer;

procedure qsort(l, r: integer);
var i, j, key, buf : integer;
begin
i := l;
j:= r;
key:=a[(l+r) div 2];
repeat
while a[i] < key do inc(i);
while a[j] > key do dec(j);
if i<=j then begin
buf:=a[i];
a[i]:=a[j];
a[j]:=buf;
inc(i);
dec(j);
end;
until (i>j);
if (l < j) then qsort(l, j);
if (i < r) then qsort(i, r);
end;

begin
readln(n);
for i:= 1 to n do begin
read(a[i]);
end;
qsort(1, n);
for i:=1 to n do begin
write(a[i], ' ');
end;
end.

4,8(85 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ