Questões de Concurso sobre Recursividade

 
 
Disciplina
Assunto 1
Banca
Instituição
Cargo
Ano
Carreira
Área de formação
Escolaridade
Dificuldade
 
Comentários:
Professores
Alunos
Meus Comentários
Vídeo
 
Minhas questões:
Resolvidas
Não resolvidas
Certas
Erradas
 
Tipo de questão:
Certo e errado
Múltipla escolha
Incluir questões:
Anuladas
Desatualizadas
 
Questões:
Todas as questões
 
Filtro simplificado
 
Questões
Todas as questões
 
65 questões encontradas
Questões por página
20
Mais recentes
 

Analise o seguinte código em linguagem C:


int x = 5;

int *p = &x;

int **pp = &p;


A expressão **pp acessa:


A

O endereço de x.


B

O endereço de p.


C

O valor armazenado em x.


D

O valor armazenado em p.


E

Um valor indefinido.

Um método recursivo é aquele que chama a si mesmo, direta ou indiretamente. Métodos recursivos permitem uma descrição mais clara e concisa dos algoritmos, especialmente quando o problema a ser resolvido pode ser definido em termos recursivos. No entanto, isso não significa que um método recursivo será sempre a melhor opção para resolver um problema (Ziviani, 2012).


O código em Python, a seguir, tem como objetivo calcular, recursivamente, o n-ésimo número de Fibonacci. Esse código é extremamente ineficiente, pois recalcula o mesmo valor várias vezes. Por exemplo, para calcular fib(5) são necessários os valores de fib(4) e fib(3). Entretanto, fib(4) também chama recursivamente fib(3).


Imagem associada para resolução da questão

Fonte: Dados do elaborador


Considerando a execução do código apresentado para n = 5, assinale a alternativa que representa CORRETAMENTE o número de chamadas de fib(5), fib(4), fib(3), fib(2) e fib(1), nessa ordem.


A

5, 3, 2, 1, 1


B

5, 4, 3, 2, 1


C

1, 2, 3, 4, 5


D

1, 1, 2, 3, 5

Considere uma função recursiva em Python destinada a calcular o fatorial de um número inteiro não negativo. Para que a recursão termine corretamente, é indispensável a definição de:


A

um caso base.


B

um laço externo.


C

uma variável global.


D

uma estrutura hash.

Um desenvolvedor está otimizando um algoritmo recursivo de Fibonacci e observa que para n=45 o tempo de execução é inaceitável. A análise mostra que a função é chamada repetidamente com os mesmos argumentos.


A técnica de otimização mais adequada para reduzir drasticamente o tempo de execução, sem alterar a natureza recursiva do algoritmo é


A

Memoization


B

Tail recursion optimization


C

Loop unrolling


D

Branch prediction


E

SIMD vectorization

Entre os tipos de consultas de DNS disponíveis, qual das alternativas corresponde ao funcionamento de uma consulta recursiva para resolução de www.ufca.edu.br?


A

O cliente enviará sua consulta ao DNS Resolver e este enviará a resposta final a qual se encontra armazenada em cache.


B

O cliente enviará sua consulta ao servidor Root e este realizará a consulta iterativa, retornando a resposta final ao cliente.


C

O cliente enviará sua consulta ao DNS Resolver e este realizará a consulta iterativa, retornando a resposta final ao cliente.


D

O cliente enviará sua consulta ao servidor autoritativo do domínio ufca.edu.br e este enviará a resposta final armazenada em sua base de dados.

Na recursividade, o que acontece se uma função chama a si mesma sem que uma “condição de parada” (caso base) seja atingida?


A

A variável global é resetada.


B

Ocorre um erro de compilação.


C

O programa termina com sucesso.


D

O compilador ignora a chamada recursiva.


E

Ocorre um estouro de pilha (stack overflow) em tempo de execução.

Analise o seguinte algoritmo, expresso na forma de uma pseudolinguagem (português estruturado):


Imagem associada para resolução da questão


Suponha que os valores lidos para as variáveis r e s, no início do algoritmo, tenham sido, respectivamente, 4 e 6.


Dessa forma, ao final da execução do algoritmo, o valor impresso de a será:


A

6


B

7


C

8


D

10


E

9

Considere o seguinte trecho de código em Linguagem C, que visa manipular uma lista encadeada simples, e analise o comportamento da função mistério a seguir:


Imagem associada para resolução da questão


Qual é o resultado da execução dessa função sobre uma lista não vazia e qual é a sua complexidade de tempo?


A

Ordena a lista de forma crescente via Bubble Sort; O(n2).


B

Inverte a ordem dos elementos da lista "in-place"; O(n).


C

Remove o último elemento da lista e atualiza o ponteiro de topo; O(n).


D

Cria uma cópia da lista em um novo endereço de memória; O(n).


E

Gera um erro de segmentação (segmentation fault) por não tratar o ponteiro next.

Sobre divisão e conquista, memoização e programação dinâmica, assinale a alternativa correta.


A

Sempre que um algoritmo recursivo apresenta subproblemas sobrepostos, a estratégia adequada é divisão e conquista, pois a independência entre subproblemas evita recomputações.


B

A memoização é uma abordagem iterativa de baixo para cima: percorre todos os subproblemas em ordem crescente de tamanho, armazenando cada resultado sequencialmente em tabela antes de resolver qualquer subproblema de tamanho maior.


C

A tabulação resolve, de forma iterativa, apenas os subproblemas que seriam efetivamente alcançados pela versão recursiva do mesmo algoritmo, evitando computações desnecessárias com estados inatingíveis.


D

Divisão e conquista e programação dinâmica são estratégias equivalentes: ambas subdividem o problema em partes menores, resolvem cada parte e combinam os resultados — a diferença é apenas notacional, não algorítmica.


E

A memoização é uma estratégia top-down: aplicada a algoritmos recursivos, armazena o resultado de cada subproblema na primeira vez que é calculado, reutilizando-o em chamadas subsequentes; a tabulação é bottom-up e preenche a tabela iterativamente em ordem crescente de tamanho de subproblema.

Uma abordagem pedagógica inovadora permite ensinar conceitos fundamentais de computação sem o uso de computadores ou dispositivos eletrônicos. Por meio de atividades lúdicas, jogos e materiais concretos, os alunos desenvolvem o raciocínio lógico e o Pensamento Computacional, tornando o ensino acessível mesmo em contextos com limitações de infraestrutura tecnológica. Marque a alternativa CORRETA que corresponde a metodologia que ensina conceitos de computação por meio de atividades práticas, jogos e materiais concretos, sem o uso de computadores.


A

Computação em Nuvem.


B

Computação Desplugada.


C

Robótica Educacional.


D

Programação Visual.

A lógica de programação fundamenta a construção de algoritmos eficientes e CORRETOs. Analise as afirmativas a seguir sobre lógica de programação.


I.Uma estrutura de repetição "enquanto" (while) verifica a condição de controle antes de executar o bloco de comandos, podendo resultar em zero iterações caso a condição seja falsa desde o início.

II.Em um algoritmo, uma variável do tipo inteiro pode armazenar valores decimais fracionários sem perda de precisão, bastando que o valor seja atribuído CORRETAmente na instrução de declaração.

III.A recursividade consiste na técnica em que uma função chama a si mesma para resolver um problema, sendo necessário definir um caso base que encerre as chamadas recursivas e evite loop infinito.


Está CORRETO o que se afirma em:


A

II apenas.


B

I e III apenas.


C

II e III apenas.


D

I, II e III.


E

I apenas.

A técnica de recursividade em algoritmos, embora elegante, pode levar ao erro de Stack Overflow principalmente devido a:


A

Concorrência de threads acessando a mesma função.


B

Falta de memória heap para alocação de objetos.


C

Ausência ou falha na condição de parada (caso base).


D

Otimização falha do compilador para laços 'for'.


E

Uso excessivo de variáveis globais dentro da função.

A recursão é uma técnica onde uma função chama a si mesma para resolver subproblemas menores de um problema original, sendo amplamente aplicada em algoritmos de divisão e conquista. Para que uma função recursiva termine adequadamente e não cause um erro de estouro de pilha, um elemento técnico específico deve estar presente. Assinale a alternativa correta.


A

O uso de recursão é tecnicamente mandatório em sistemas de tempo real para garantir que o tempo de execução seja previsível e linear em relação à entrada.


B

A recursividade em cauda é uma técnica onde o compilador converte chamadas aninhadas em saltos de memória para evitar o uso de registradores de ponto flutuante.


C

A profundidade máxima de chamadas recursivas é determinada estaticamente pelo tamanho do código binário da função armazenado na memória de leitura do sistema.


D

Toda função recursiva deve possuir um caso base que interrompa as chamadas sucessivas e retorne um valor sem realizar uma nova invocação interna.

Em seu Dicionário de palavras & expressões estrangeiras, Luis Augusto Fischer observa com irreverência que há "duas pronúncias: a que os gramáticos preferem, 'recórde', ou a do resto da humanidade, 'récorde". (2º parágrafo)


Ao vincular a pronúncia "récorde" ao "resto da humanidade", Luís Augusto Fischer faz uso da figura de linguagem denominada


A

antítese.


B

pleonasmo.


C

personificação.


D

eufemismo.


E

hipérbole.

No desenvolvimento de algoritmos, a recursividade pode ser classificada em diferentes tipos, de acordo com a forma como as chamadas recursivas ocorrem. Nesse sentido, considere que uma função, durante sua execução, realiza uma chamada para ela mesma, ou seja, a própria função invoca diretamente sua definição em seu corpo. Essa situação caracteriza qual tipo de recursividade?


A

Recursão indireta.


B

Recursão mútua.


C

Recursão direta.


D

Recursão linear.


E

Recursão estrutural.

Considere a função fx escrita na linguagem PHP e assinale a alternativa que apresenta um código que poderia ser utilizado para substituir a linha de código return fx($n - 1) + fx($n - 2); de forma a ter resultado equivalente à função fx original.


Imagem associada para resolução da questão


A

Imagem associada para resolução da questão


B

Imagem associada para resolução da questão


C

Imagem associada para resolução da questão


D

Imagem associada para resolução da questão


E

Imagem associada para resolução da questão

Durante uma investigação, um grupo de pessoas foi interrogado, e cada uma fez uma declaração sobre quem era o culpado. O investigador percebeu que apenas uma dessas declarações era verdadeira. Com base nisso, analise as alternativas e determine qual delas é correta.


A

Quando apenas uma declaração é verdadeira, o raciocínio lógico utilizado deve assumir que todas as declarações falsas apresentam informações incorretas e inconsistentes entre si.


B

O problema exige avaliar cada declaração de forma independente, presumindo inicialmente que todas são verdadeiras e depois eliminando aquelas que contradizem as demais.


C

O raciocínio lógico nesse caso baseia-se na ideia de que todas as declarações são verdadeiras, exceto por uma que pode ser descartada sem comprometer a conclusão.


D

Apenas uma das declarações feitas é verdadeira, e isso implica que todas as outras são necessariamente falsas, mesmo que contenham elementos parcialmente corretos.

Suponha que, no mesmo banco de dados e imediatamente após a execução dos comandos apresentados, tenha sido executado o código SQL a seguir.

WITH RECURSIVE processop AS (

SELECT idproc, descricao, referencia

FROM processos

WHERE referencia IS NOT NULL

UNION ALL

SELECT p.idproc, p.descricao, p.referencia

FROM processos p

INNER JOIN processop pp ON p.referencia =

pp.idproc

)

SELECT distinct

idproc,

descricao,

(SELECT descricao FROM processos WHERE

idproc = processop.referencia) AS

descricao_pai

FROM processop

ORDER BY idproc;

Nessa situação hipotética, após as referidas ações, será apresentado o resultado a seguir.

Imagem associada para resolução da questão


C

Certo


E

Errado

Os algoritmos são sequências lógicas e finitas de passos que resolvem problemas específicos, sendo a base para o desenvolvimento de sistemas computacionais. Sobre algoritmos, analise as afirmativas a seguir:


I. Algoritmos recursivos são aqueles que se definem em termos de si mesmos, exigindo uma condição base para evitar chamadas infinitas.

II. A complexidade de tempo de um algoritmo refere-se exclusivamente ao número de passos necessários para executar o código, desconsiderando a entrada do problema.

III. Um algoritmo pode ser implementado em diferentes linguagens de programação, desde que sua lógica seja preservada.


Está correto o que se afirma em:


A

II, apenas.


B

I e II, apenas.


C

I, II e III.


D

I e III, apenas.

 
 
Gerar simulado