Prévia do material em texto
13/05/2025 18:21:29 1/3 REVISÃO DE SIMULADO Nome: ELINALDO TEIXEIRA ALVES Disciplina: Algoritmos e Programação II Respostas corretas são marcadas em amarelo X Respostas marcardas por você. Questão 001 A recursividade é uma técnica utilizada em programação onde uma função chama a si mesma para resolver subproblemas menores de um problema maior. Considere a seguinte implementação em C de uma função recursiva que calcula o fatorial de um número inteiro positivo n: int fatorial(int n) { if (n == 0) { return 1; } else { return n * fatorial(n - 1); } } Sobre o código acima, assinale a alternativa correta: A) A função fatorial utiliza a técnica de divisão e conquista para resolver o problema. X B) A função fatorial entrará em laço de repetição infinito se n for negativo. C) A função fatorial não pode ser implementada iterativamente. D) A função fatorial não retornará o valor correto se n for maior que 10. E) A função fatorial possui um caso base que garante a terminação da recursão. Questão 002 Qual das opções a seguir representa uma limitação (ou problema) comum ao uso de recursão em C? A) Recursão não pode ser usada em funções que retornam um valor. B) Funções recursivas não podem manipular estruturas de dados complexas. X C) Funções recursivas podem resultar em estouro de pilha se mal implementadas. D) Funções recursivas são incompatíveis com a abordagem de programação modular. E) Recursão não pode ser combinada com ponteiros em C. Questão 003 A recursividade é frequentemente usada em problemas que podem ser decompostos em subproblemas menores, como o cálculo do fatorial. Entretanto, um dos maiores desafios ao utilizar recursividade é a definição do caso base, que garante que a recursão seja interrompida em algum ponto. Sobre o uso de recursão no cálculo do fatorial, assinale a alternativa correta: A) A recursão sempre resulta em um loop infinito, independentemente da definição do caso base. B) A recursividade só é eficiente para pequenos valores de n, sendo proibida para valores maiores. C) A função recursiva fatorial não precisa de um caso base, pois ela se resolve automaticamente. D) O cálculo do fatorial não pode ser implementado usando recursão, apenas iteração. X E) O caso base para a função fatorial define a condição de parada da recursão, evitando loops infinitos. 13/05/2025 18:21:29 2/3 Questão 004 A recursividade é uma técnica fundamental em algoritmos, onde uma função chama a si mesma para resolver um problema maior dividindo-o em subproblemas menores. Considere o seguinte código em C, que calcula o fatorial de um número: int fatorial(int n) { if (n == 0) return 1; else return n * fatorial(n - 1); } Sobre esse código e o conceito de recursividade, analise as seguintes afirmações: I. A função utiliza recursividade para resolver o problema, pois chama a si mesma para calcular o fatorial de n. II. O caso base está corretamente definido na condição n == 0, o que impede um loop infinito. III. A função pode causar estouro de pilha se for chamada com valores muito grandes de n. Está correto o que se afirma em: A) I, apenas. B) Nenhuma das alternativas anteriores. X C) I, II e III. D) I e II, apenas. E) II e III, apenas. Questão 005 Algumas funções matemáticas podem ser estabelecidas de tal forma que as suas definições utilizem, de modo recorrente, a própria função que se está definindo. Um exemplo clássico disso é a recursividade, que é uma ideia inteligente que desempenha um papel central na programação funcional como o mecanismo de programação na qual a chamada é feita direta ou indiretamente por ela mesma para realizar o cálculo necessário. Fonte: Aprendendo a Programar Programando na Linguagem C de Jaime Evaristo (Terceira Edição). Analise o trecho do código em C abaixo, aplicando a recursividade com a utilização do conceito de um número fatorial. long int FatRec(int n) { if ((n== 0) || (n== 1)) return (1); else return (n * FatRec(n - 1)); } Qual seria o resultado exibido para o usuário usando o comando “printf” se ativarmos a função acima passando o valor de n = 8? A) 36860 X B) 40320 C) 362880 D) 40480 E) 5040 Questão 006 Sobre recursividade e funções recursivas, complete a frase abaixo com a alternativa correta. Uma função recursiva é uma função que __________. 13/05/2025 18:21:29 3/3 A) utiliza laços de repetição para processar dados de forma contínua. X B) chama a si mesma direta ou indiretamente durante sua execução. C) sempre chama outra função auxiliar para realizar sua tarefa. D) armazena seus resultados em uma pilha para facilitar o acesso. E) repete seu código até encontrar um valor de retorno específico. Questão 007 Sobre recursividade e funções recursivas, marque a alternativa que completa a lacuna abaixo corretamente. Uma função recursiva deve ter __________, pois isso garante __________. A) um valor inicial zero; o correto retorno do resultado. B) uma função auxiliar; a correta chamada da recursão. C) um contador de iterações; a eficiência na execução. D) parâmetros de entrada constantes; a estabilidade da memória. X E) uma condição de parada; que a função termine em algum momento. Questão 008 Considerando o contexto da recursividade direta e indireta, avalie as seguintes asserções e a relação proposta entre elas, e marque a opção correta. I – A recursividade direta ocorre quando uma função chama a si mesma diretamente, sendo amplamente utilizada em problemas como cálculo de fatorial e algoritmos de ordenação. PORQUE II – A recursividade indireta é aquela em que uma função chama outra função, que por sua vez chama a função original novamente, o que dificulta a implementação de casos base, tornando-a menos comum. A) As asserções I e II são proposições falsas. B) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. C) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. D) As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I. X E) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.