Question
it (v = vetor(m) return m; it (1)f) return -1 if (v > vetor(m)) 18 19 return funcao?(vetor , v, m+1, else 20 return funcao?(vetor, V,1.m-1); 21 , 22 int main()( 23 int vetor (TAN) =11, 13,15,17 24 printf("Ad - Id", funcaol (vetor, 15), funcao2(vetor, 15, 0, T AM-1)); 25 return 0; 26 1 A respelto das funçoes implementadas, avalie as afirmações a seguir. 1. Oresultado da impressão na linha 24é: 7-7. II. A função funcao1, no pior caso, é uma estratégia mais rápida do que a funcao2. III.A função funcao2 implementa uma estratégia iterativa na concepção do algoritmo. correto oque se afirma em: A D III, apenas B I,II ell II elll, apenas J 1. apenas
Solution
4.6
(262 Votos)
Querida
Mestre · Tutor por 5 anos
Resposta
Para avaliar as afirmações, vamos analisar o código fornecido:```c#include int funcao1(int vetor[], int v, int m) { if (v == vetor[m]) { return v; } else { return funcao1(vetor, v, m + 1); }}int funcao2(int vetor[], int v, int m, int n) { if (v == vetor[m]) { return v; } else { return funcao2(vetor, v, m - 1, n); }}int main() { int vetor[4] = {11, 13, 15, 17}; printf("Ad - Id: %d - %d\n", funcao1(vetor, 15, 0), funcao2(vetor, 15, 0, 3)); return 0;}```Vamos analisar cada afirmação:1. **O resultado da impressão na linha 24 é: 7 - 7.** - Para verificar isso, precisamos calcular os valores de `funcao1(vetor, 15, 0)` e `funcao2(vetor, 15, 0, 3)`. - `funcao1(vetor, 15, 0)`: - `v` é 15, `vetor[0]` é 11. - `v` não é igual a `vetor[0]`, então chamamos `funcao1(vetor, 15, 1)`. - `v` é 15, `vetor[1]` é 13. - `v` não é igual a `vetor[1]`, então chamamos `funcao1(vetor, 15, 2)`. - `v` é 15, `vetor[2]` é 15. - `v` é igual a `vetor[2]`, então retornamos `v` (que é 15). - `funcao2(vetor, 15, 0, 3)`: - `v` é 15, `vetor[0]` é 11. - `v` não é igual a `vetor[0]`, então chamamos `funcao2(vetor, 15, 1, 3)`. - `v` é 15, `vetor[1]` é 13. - `v` não é igual a `vetor[1]`, então chamamos `funcao2(vetor, 15, 2, 3)`. - `v` é 15, `vetor[2]` é 15. - `v` é igual a `vetor[2]`, então retornamos `v` (que é 15). - Portanto, ambos os valores são 15, então a impressão será `15 - 15`, que não é `7 - 7`. Portanto, a primeira afirmação está incorreta.2. **A função funcao1, no pior caso, é uma estratégia mais rápida do que a funcao2.** - `funcao1` faz uma busca linear, chamando `funcao1(vetor, v, m + 1)` até encontrar o valor ou ultrapassar o final do vetor. - `funcao2` faz uma busca binária, chamando `funcao2(vetor, v, m - 1, n)` até encontrar o valor ou ultrapassar o final do vetor. - A busca binária é mais eficiente do que a busca linear, pois divide o problema em metade a cada iteração. Portanto, a segunda afirmação está correta.3. **A função funcao2 implementa uma estratégia iterativa na concepção do algoritmo.** - A função `funcao2` utiliza recursão para implementar a busca binária, o que é uma estratégia iterativa. Portanto, a terceira afirmação está correta.Portanto, a resposta correta é:C. II e III, apenas