Перемножить два числа с помощью рекурсивной функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вообще не понимаю тему рекурсия..... Нужно написать программу которая перемножает 2 числа без помощи операции умножения, если можно то с комментариями, заранее спасибо

Решение задачи: «Перемножить два числа с помощью рекурсивной функции»

textual
Листинг программы
#include <stdio.h>
 
int rec(int, int);
 
int main(){
    int a,b;
    int rez;
    printf("input a and b: ");
    scanf("%d%d", &a, &b);
    if (a<0 && b<0){
        a*=-1;
        b*=-1;
    }
    if (a>0 && b<=0){
        b=a+b;
        a=b-a;
        b=b-a;
    }
    rez=rec(a,b);
    printf("rez=%d", rez);
    return 0;
}
 
int rec(int x, int y){
    int rez=0;
    rez+=x;
    y--;
    if (y==0)
        return rez;
    return rez+=rec(x,y);
}

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

В этом коде есть две основные функции: main и rec.

  1. main - это функция, которая считывает два числа от пользователя, затем применяет некоторые правила для корректной обработки ввода (например, если оба числа отрицательные, они инвертируются). Затем вызывается рекурсивная функция rec, которая выполняет умножение чисел. Результат выводится на экран.
  2. Функция rec - это рекурсивная функция, которая выполняет умножение двух чисел. Она начинает с инициализации переменной rez равной 0. Затем она добавляет первое число к rez и уменьшает второе число на 1. Если второе число равно 0, функция возвращает значение rez. Если нет, она вызывает саму себя (то есть рекурсивно), передавая первое число и уменьшенное второе число в качестве аргументов. Результат этого вызова добавляется к rez. Этот процесс продолжается, пока второе число не станет равным 0. Список переменных и их значений:
  3. a, b - два числа, которые нужно перемножить.
  4. rez - переменная, которая используется для хранения промежуточных результатов в функции rec.
  5. x, y - переменные, которые используются внутри функции rec для представления первого и второго числа соответственно.

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


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

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

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