Escrever uma função recursiva int multiplica(int x, int y ) que retorna x * y.

Passo 1

O enunciado pede pra criar uma função recursiva int multiplica(int x, int y) que calcule o produto de x por y sem usar o operador *. Vamos usar o conceito de recursão onde a multiplicação é somar x consigo mesmo y vezes.

Passo 2

Precisamos identificar o caso base da recursão: quando y for zero, qualquer número vezes zero é zero. Nesse caso retornamos 0.

Passo 3

Para y positivo, podemos definir multiplica(x, y) = x + multiplica(x, y-1). Assim vamos somando x repetidamente até chegarmos em y=0.

Passo 4

Para y negativo, podemos aproveitar a relação x * y = - (x * |y|). Então, se y < 0, retornamos -multiplica(x, -y) e a recursão segue o mesmo fluxo.

Passo 5

Juntando as condições acima temos a definição completa da função. Abaixo está a implementação em C.

Resposta

int multiplica(int x, int y) {
if (y == 0)
return 0;
if (y < 0)
return -multiplica(x, -y);
return x + multiplica(x, y - 1);
}

Exercícios relacionados