Escrever uma função recursiva int multiplica(int
, int
) que retorna
.
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);
}
if (y == 0)
return 0;
if (y < 0)
return -multiplica(x, -y);
return x + multiplica(x, y - 1);
}