Напишите рекурсивную функцию, вычисляющую сумму целых чисел n и m - C (СИ)
Формулировка задачи:
Составить программу для следующей задачи используя рекурсивные алгоритмы!
Напишите рекурсивную функцию, вычисляющую сумму целых чисел n и m, в которой из арифметических операций используется только прибавление и вычитание единиц
Решение задачи: «Напишите рекурсивную функцию, вычисляющую сумму целых чисел n и m»
textual
Листинг программы
#include <stdio.h>
int recsum(int a, int b) {
return ( b > 0 ) ? recsum(a + 1, b - 1) : ( b < 0 ) ? recsum(a - 1, b + 1) : a;
}
int main(void) {
int a, b;
while ( printf("A = ") && scanf("%d", &a) == 1 && printf("B = ") && scanf("%d", &b) == 1 )
printf("A + B = %d\n", recsum(a, b));
return 0;
}
Объяснение кода листинга программы
- Включаем стандартную библиотеку ввода-вывода
- Определяем рекурсивную функцию с двумя целыми числами в качестве параметров и без параметров в качестве возвращаемого значения
- Проверяем, больше ли второе число нуля. Если да, то рекурсивно вызываем функцию с увеличенным первым числом и уменьшенным вторым числом. Если меньше или равно нулю, то рекурсивно вызываем функцию с уменьшенным первым числом и увеличенным вторым числом. Если второе число равно нулю, то возвращаем первое число
- В функции main() объявляем два целочисленных переменных и используем цикл while для получения значений от пользователя и вызова функции recsum(). Выводим результат сложения на экран
- По завершении цикла while завершаем программу