Кам мне эту функцию реализировать в код для программы с рекурсивной функцией для умножения двух чисел А*В используя только операцию сложения. с++

int main()
{
{     
    int a, b;
 
    cout << "Enter a,  b";   
    cin >> a >> b; 
  
    cout <<  func( a, b );
}
return 0;
}

Ответы (2 шт):

Автор решения: Harry

Так годится?

int prod(int a, int b)
{
    if (a == 0 || b == 0) return 0;
    if (a < 0) return -b + prod(-a-1,-b);
    return b + prod(a-1,b);
}

int main()
{
    int a,b;
    cin >> a >> b;
    cout << prod(a,b);
}

Впрочем, более эффективно так:

int prod(int a, int b)
{
    if (a == 0 || b == 0) return 0;
    int sign = 1;
    if (a < 0) { sign = -sign; a = -a; }
    if (b < 0) { sign = -sign; b = -b; }
    if (a > b) { int t = a; a = b; b = t; }
    return sign*(b + prod(a-1,b));
}
→ Ссылка
Автор решения: FauDva

мой вариант:

int func(int a, int b) {
    int sum = 0;
    for (int i = 0; i < b; i++)
        sum += a;
    return sum;
}
int main()
{
    int a, b;
    std::cout << "Enter a,  b\n";
    std::cin >> a >> b;
    std::cout << func(a, b);
    return 0;
}
→ Ссылка