Questão nº 30

Questão de Desenvolvimento de Sistemas · FCC TRT15 2023 (nº 30)

FCC2023Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoDesenvolvimento de Sistemas
Gabarito: Dver comentário ↓

Um Analista fez um programa Java que permite ao usuário informar o número de anos de serviço de um funcionário e, em seguida, calcula a quantidade total de dias de férias acumuladas com base nas regras estabelecidas: 15 dias de férias para funcionários com até 5 anos de serviço e 15 dias adicionais para cada novo período de até 5 anos.

```java
import java.util.Scanner;

public class Ferias {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Informe o número de anos de serviço: ");
int anosServico = scanner.nextInt();
int diasFerias = calcular(anosServico);
System.out.println("Dias de férias acumuladas: " + diasFerias);
}

public static int calcular(int anosServico) {
if (anosServico <= 5)
return 15;
else {

}
}
}
```

Para que o programa execute corretamente na forma descrita, no interior do bloco `else` do método `calcular` deve ser colocada a instrução

Resposta comentada

Gabarito Alternativa D

Recursão é uma técnica de programação onde uma função resolve um problema chamando a si mesma com uma versão menor do mesmo problema, até chegar a um caso base que pode ser resolvido diretamente.

  • (A) Incorreta: return calcular(anosServico - 5); Esta instrução apenas calcula as férias para os anos restantes, esquecendo de adicionar os 15 dias referentes ao período de 5 anos que está sendo processado na chamada atual.
  • (B) Incorreta: return 15 + calcular(anosServico - 15); A subtração anosServico - 15 está incorreta. A regra é reduzir 5 anos para cada período de 15 dias de férias, não 15 anos. Isso levaria a resultados errados e chamadas com anos negativos rapidamente.
  • (C) Incorreta: return 15 + (anosServico - 5); Esta não é uma chamada recursiva. Ela tenta resolver o problema de forma linear, somando 15 dias e depois os anos restantes, mas não aplica a regra de "15 dias adicionais para cada novo período de até 5 anos" de forma recursiva. Por exemplo, para 6 anos, retornaria 15 + (6 - 5) = 16, quando o correto é 30. Esta é uma armadilha comum para quem não compreende a necessidade de aplicar a regra repetidamente aos anos restantes.
  • (D) Correta: return 15 + calcular(anosServico - 5); Esta instrução implementa corretamente a lógica recursiva. Ela adiciona os 15 dias de férias correspondentes ao período atual (os primeiros 5 anos ou o bloco de 5 anos que está sendo avaliado) e, em seguida, chama a função calcular novamente para determinar as férias dos anosServico - 5 restantes, aplicando a mesma regra até atingir o caso base (anosServico <= 5).
  • (E) Incorreta: return anosServico + 15; Esta não é uma chamada recursiva e não segue a regra de "15 dias para cada período de até 5 anos". Ela simplesmente soma 15 aos anos de serviço, o que não corresponde ao cálculo desejado.

Fonte: FCC TRT15 2023 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 002). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho