Рекурсия: функция сложения двух чисел, используя только прибавление единицы - C (СИ)
Формулировка задачи:
Помогите написать программу:
Написать функцию сложения двух чисел, используя только прибавление единицы.
Решение задачи: «Рекурсия: функция сложения двух чисел, используя только прибавление единицы»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int plus(int operand1, int operand2, int iter) {
if (abs(iter)<abs(operand2))
return plus(operand1+(operand2<0? -1: 1), operand2, iter + (operand2<0? -1: 1));
else
return operand1;
}
int main(int argc, char** argv) {
int oper1, oper2;
scanf("%d", &oper1);
scanf("%d", &oper2);
printf("Result = %d", plus(oper1, oper2, 0));
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с числами и вводом-выводом
- Определение функции plus, которая реализует рекурсивную операцию сложения двух чисел
- В функции main считываются два числа с помощью функции scanf
- С помощью функции plus происходит сложение двух чисел
- Результат выводится на экран с помощью функции printf
- Функция plus осуществляет рекурсивное сложение двух чисел. Если модуль результата (iter) меньше модуля второго числа (operand2), то происходит рекурсивный вызов функции plus с увеличенным на единицу (или на -1, если второе число отрицательное) значением первого числа (operand1), увеличенным на единицу (или на -1, если второе число отрицательное) значением второго числа (operand2) и увеличенным на единицу (или на -1, если второе число отрицательное) значением iter. Если модуль результата (iter) больше или равен модулю второго числа (operand2), то возвращается первое число (operand1)
- В функции main считываются два числа с помощью функции scanf. Первое число считывается в переменную oper1, второе число считывается в переменную oper2
- Результат сложения двух чисел выводится на экран с помощью функции printf
- Программа завершается возвратом значения 0 из функции main, что означает корректное завершение работы программы