Logo Passei Direto
Buscar

Programação

Engenharias
O código implementado abaixo utiliza a recursividade para realização do cálculo de potência: long potencia(int x, int y) { if (y == 0 ) { return 1; } else { if (y != 1) x*= potencia(x, y - 1); return x; } } int main() { printf("Potencia = %d\n", potencia(3,4)); return 0; } Assinale qual a saída esperada para o código acima: Escolha uma opção: a. 81 b. 256 c. 27 d. 16 e. 56
User badge image
marceloaalmeida

ano passado

Respostas

User badge image

Ed Verified user icon

ano passado

Vamos analisar o código apresentado para entender qual será a saída esperada. A função `potencia(int x, int y)` calcula \( x^y \) (x elevado a y) usando recursão. Vamos ver como ela funciona: 1. Se \( y == 0 \), a função retorna 1, pois qualquer número elevado a 0 é 1. 2. Se \( y \) não é 1, a função multiplica \( x \) pelo resultado da chamada recursiva `potencia(x, y - 1)`. Agora, vamos calcular `potencia(3, 4)` passo a passo: - `potencia(3, 4)` chama `potencia(3, 3)` - `potencia(3, 3)` chama `potencia(3, 2)` - `potencia(3, 2)` chama `potencia(3, 1)` - `potencia(3, 1)` retorna 3 (pois não entra na condição de \( y == 0 \) e \( y != 1 \) não é mais verdadeira) - Agora, voltando: - `potencia(3, 2)` calcula \( 3 \times 3 = 9 \) - `potencia(3, 3)` calcula \( 3 \times 9 = 27 \) - `potencia(3, 4)` calcula \( 3 \times 27 = 81 \) Portanto, a saída esperada para o código é: a. 81 A resposta correta é a) 81.

Essa resposta te ajudou?

1
Dislike0

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Mais conteúdos dessa disciplina