ENADE 2019: A linguagem Python não permite alguns tipos de otimização como, por exemplo

ENADE 2019: A linguagem Python não permite alguns tipos de otimização como, por exemplo, a recursão em cauda e, devido à sua natureza dinâmi...
ENADE 2019: A linguagem Python não permite alguns tipos de otimização como, por exemplo, a recursão em cauda e, devido à sua natureza dinâmica, é impossível realizar esse tipo de otimização em tempo de compilação tal como em linguagens funcionais como Haskell ou ML.
Disponível em: <http:/www.python-history.blogspot.com/2009/04/origins-of-pythons-functional-features.html>. Acesso: em 15 jun. 2019 (adaptado).

O trecho de código a seguir, escrito em Python, realiza a busca binária de um elemento x em uma lista lst e a função binary_search tem código recursivo em cauda.
1 def binary_search(x, lst, low=None, high=None):
2       if low == None : low = 0
3       if high == None : high = len(lst)-1
4       mid = low + (high - low) // 2
5       if low > high :
6                  return None
7       elif lst[mid] == x :
8                  return mid
9       elif lst[mid] > x :
10             return binary_search(x, lst, low, mid-1)
11       else :
12                 return binary_search(x, lst, mid+1, high)
Disponível em: <https://www.kylem.net/programming/tailcall.html>.
Acesso em: 15 jun. 2019 (adaptado).

Considerando esse trecho de código, avalie as afirmações a seguir.

I. Substituindo-se o conteúdo da linha 10 por high = mid - 1 e substituindo-se o conteúdo da linha 12 por low = mid + 1, não se altera o resultado de uma busca.

II. Envolvendo-se o código das linhas 4 a 12 em um laço while True, substituindo-se o conteúdo da linha 10 por high = mid - 1 e substituindo-se o conteúdo da linha 12 por low = mid + 1 remove-se a recursão de cauda e o resultado da busca não é alterado.

III. Substituindo-se o código da linha 10 por:
newhigh = mid-1
return binary_search(x, lst, low, newhigh)
e substituindo-se o código da linha 12 por:
newlow = mid+1
return binary_search(x, lst, newlow, high)
remove-se a recursão de cauda.

IV. Substituindo-se o conteúdo das linhas 9 a 12 por
       if lst[mid] > x :
          newlow = low
          newhigh = mid-1
       else:
          newlow = mid+1
          newhigh = high
       return binary_search(x, lst, newlow, newhigh)
  mantém-se o resultado da busca.

É correto o que se afirma em

A) I, apenas.
B) II e III, apenas.
C) II e IV, apenas.
D) I, III e IV, apenas.
E) I, II, III e IV.

QUESTÃO ANTERIOR:
ENADE 2019: Protocolos de roteamento de estado de enlace utilizam difusão para propagar informações de estado de enlace que são usadas para calcular rotas individuais.

GABARITO:
C) II e IV, apenas.

PRÓXIMA QUESTÃO:
- ENADE 2019: Proporcional-Integral-Derivativo (PID) é o algoritmo de controle que mais tem sido utilizado na indústria e no mundo para sistemas de controle industrial.

QUESTÃO DISPONÍVEL EM:
Prova do ENADE 2019 Engenharia da Computação com Gabarito

COMENTÁRIOS

Todas as Postagens Não foram encontradas postagens VEJA TODOS Leia Mais Resposta Cancelar resposta Deletar Por Home PAGINAS POSTS Veja todos RECOMENDADOS PARA VOCÊ Tudo Sobre ARQUIVOS BUSCAR TODOS OS POSTS Nenhuma postagem foi encontrada Voltar para Home Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Sep Out Nov Dez Agora mesmo 1 minuto atrás $$1$$ minutos agora 1 hora atrás $$1$$ horas atrás Ontem $$1$$ dias atrás $$1$$ semanas atrás mais de 5 semanas atrás Seguidores Seguir CONTEÚDO PREMIUM BLOQUEADO PASSO 1: Compartilhar em uma rede social PASSO 2: Clique no link na sua rede social Copiar todo o código Selecionar todo o código Todos os códigos foram copiados Não é possível copiar os códigos / textos, pressione [CTRL] + [C] para copiar Tabela de conteúdo