С помощью рекурсивных функций определить операции нахождения суммы - 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;
}

Объяснение кода листинга программы

  1. Программа определяет четыре рекурсивные функции: add, sub, mul, pow для выполнения операций сложения, вычитания, умножения и возведения в степень соответственно.
  2. Функции add, sub, mul и pow принимают два целых числа n и m в качестве входных параметров.
  3. Если m больше или равно 0, то функции вызывают сами себя с n+1 и m-1 в качестве аргументов, пока m не станет меньше 0.
  4. Если m меньше 0, то функции возвращают значение n.
  5. Функция main() считывает два целых числа n и m с помощью функции scanf().
  6. Если два числа успешно считываются, то программа вызывает функции add, sub, mul и pow с n и m в качестве аргументов и выводит результаты на экран.
  7. Если два числа не могут быть считаны или они отрицательны, то программа ничего не выводит.
  8. Функция main() возвращает 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5
Похожие ответы