С помощью рекурсивных функций определить операции нахождения суммы - 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, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д