

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Analise o seguinte código em linguagem C:
int x = 5;
int *p = &x;
int **pp = &p;
A expressão **pp acessa:
O endereço de x.
O endereço de p.
O valor armazenado em x.
O valor armazenado em p.
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).

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.
5, 3, 2, 1, 1
5, 4, 3, 2, 1
1, 2, 3, 4, 5
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:
um caso base.
um laço externo.
uma variável global.
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 é
Memoization
Tail recursion optimization
Loop unrolling
Branch prediction
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?
O cliente enviará sua consulta ao DNS Resolver e este enviará a resposta final a qual se encontra armazenada em cache.
O cliente enviará sua consulta ao servidor Root e este realizará a consulta iterativa, retornando a resposta final ao cliente.
O cliente enviará sua consulta ao DNS Resolver e este realizará a consulta iterativa, retornando a resposta final ao cliente.
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.


Seu próximo nível começa aqui

Seu próximo nível começa aqui
Destrave a preparação completa para sua aprovação. Com a Assinatura Ilimitada, você estuda com os melhores professores do Brasil e todos os recursos Gran.
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 variável global é resetada.
Ocorre um erro de compilação.
O programa termina com sucesso.
O compilador ignora a chamada recursiva.
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):

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á:
6
7
8
10
9
Analise o seguinte pseudocódigo:

Qual será o valor retornado por f(7)?
21
105
315
945
5040
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:

Qual é o resultado da execução dessa função sobre uma lista não vazia e qual é a sua complexidade de tempo?
Ordena a lista de forma crescente via Bubble Sort; O(n2).
Inverte a ordem dos elementos da lista "in-place"; O(n).
Remove o último elemento da lista e atualiza o ponteiro de topo; O(n).
Cria uma cópia da lista em um novo endereço de memória; O(n).
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.
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.
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.
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.
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.
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.


Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
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.
Computação em Nuvem.
Computação Desplugada.
Robótica Educacional.
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:
II apenas.
I e III apenas.
II e III apenas.
I, II e III.
I apenas.
A técnica de recursividade em algoritmos, embora elegante, pode levar ao erro de Stack Overflow principalmente devido a:
Concorrência de threads acessando a mesma função.
Falta de memória heap para alocação de objetos.
Ausência ou falha na condição de parada (caso base).
Otimização falha do compilador para laços 'for'.
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.
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.
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.
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.
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
antítese.
pleonasmo.
personificação.
eufemismo.
hipérbole.


Seu próximo nível começa aqui

Seu próximo nível começa aqui
Destrave a preparação completa para sua aprovação. Com a Assinatura Ilimitada, você estuda com os melhores professores do Brasil e todos os recursos Gran.
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?
Recursão indireta.
Recursão mútua.
Recursão direta.
Recursão linear.
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.






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.
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.
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.
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.
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.

Certo
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:
II, apenas.
I e II, apenas.
I, II e III.
I e III, apenas.