Logo Passei Direto
Buscar

Algoritmos

Unimais
Questão 10 (COMPERVE-2016) Analise o trecho de código em C a seguir. #include int comp(int a, int b) { if (b == 0) return a; else return comp(b,a%b); } int main() { printf("%d",comp(15,20)); } O valor impresso após a execução desse código é
User badge image
Vanessa Sara

ontem

Respostas

User badge image

Ed Verified user icon

ontem

Para entender o que o código faz, vamos analisar a função `comp`. Essa função parece implementar o algoritmo de Euclides para calcular o máximo divisor comum (MDC) de dois números inteiros. 1. A função `comp` recebe dois inteiros `a` e `b`. 2. Se `b` for igual a 0, a função retorna `a`, que é o MDC. 3. Se `b` não for 0, a função chama a si mesma com os parâmetros `b` e `a % b`. Agora, vamos aplicar isso ao exemplo dado na função `main`, que chama `comp(15, 20)`: - Primeira chamada: `comp(15, 20)` - `b` não é 0, então chamamos `comp(20, 15 % 20)` → `comp(20, 15)` - Segunda chamada: `comp(20, 15)` - `b` não é 0, então chamamos `comp(15, 20 % 15)` → `comp(15, 5)` - Terceira chamada: `comp(15, 5)` - `b` não é 0, então chamamos `comp(5, 15 % 5)` → `comp(5, 0)` - Quarta chamada: `comp(5, 0)` - Aqui, `b` é 0, então retornamos `5`. Portanto, o valor impresso após a execução do código é 5.

Essa resposta te ajudou?

0
Dislike0

Ainda com dúvidas?

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

Mais conteúdos dessa disciplina