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