Matemática — Cálculo Múltipla Escolha

Em funções recursivas, a posição da chamada recursiva em relação às demais linhas de código influencia a ordem em que o processamento acontece. Dependendo da recursividade (pré-ordem ou pós-ordem), a ordem de execução das chamadas recursivas ou, finalmente, pós-ordem (processamento após as chamadas recursivas). Para essa questão, suponha o código a seguir:

Em funções recursivas, a posição da chamada recursiva em relação às demais linhas de código influencia a ordem em que o processamento acontece. Dependendo da recursividade (pré-ordem ou pós-ordem), a ordem de execução das chamadas recursivas ou, finalmente, pós-ordem (processamento após as chamadas recursivas). Para essa questão, suponha o código a seguir:

#include <stdio.h>

void Recurso1(int i) {
    if(i>=5) return;
    printf("%d ", i);
    Recurso1(i+1);
}

void Recurso2(int i) {
    if(i>=5) return;
    Recurso2(i+1);
    printf("%d ", i);
}

int main() {
    Recurso1(0);
    printf("\n");
    Recurso2(0);
    return 0;
}
  1. A função Recurso1 segue uma recursão pré-ordem - logo o seu resultado é ‘0 1 2 3 4’. Por sua vez, a função Recurso2 é pós-ordem, por consequência, o seu resultado é ‘4 3 2 1 0’.
  2. A função Recurso1 segue uma recursão pós-ordem - logo o seu resultado é ‘4 3 2 1 0’. Por sua vez, a função Recurso2 é pré-ordem, por consequência, o seu resultado é ‘0 1 2 3 4’.
  3. A função Recurso1 segue uma recursão pré-ordem - logo o seu resultado é ‘4 3 2 1 0’. Por sua vez, a função Recurso2 é pós-ordem, por consequência, o seu resultado é ‘0 1 2 3 4’.
  4. A função Recurso1 segue uma recursão pós-ordem - logo o seu resultado é ‘4 3 2 1 0’. Por sua vez, a função Recurso2 é pré-ordem, por consequência, o seu resultado é ‘0 1 2 3 4’.
  5. A função Recurso1 segue uma recursão pós-ordem - logo o seu resultado é ‘0 1 2 3 4’. Por sua vez, a função Recurso2 é pós-ordem, por consequência, o seu resultado é ‘4 3 2 1 0’.

Resolução completa

Explicação passo a passo

A
Alternativa A

Alternativa A

A questão aborda os conceitos de ordem de execução em funções recursivas, especificamente distinguindo entre recursividade em pré-ordem e pós-ordem. Para responder corretamente, precisamos analisar a posição da instrução de impressão (printf) em relação à chamada da própria função.

Análise do Código

O enunciado define claramente os tipos de recursão:

  • Pré-ordem: O processamento ocorre antes da chamada recursiva.
  • Pós-ordem: O processamento ocorre depois da chamada recursiva.

1. Função Recurso1

Observe a estrutura da função:

void Recurso1(int i) {
    if(i>=5) return;
    printf("%d ", i);      // PROCESSAMENTO
    Recurso1(i+1);         // CHAMADA RECURSIVA
}

Como o comando de imprimir vem antes da chamada Recurso1(i+1), trata-se de uma recursão em pré-ordem.

  • Execução: Imprime 0, chama para 1. Imprime 1, chama para 2... até chegar em 5 (onde retorna).
  • Resultado: A sequência é crescente: 0 1 2 3 4.

2. Função Recurso2

Observe a estrutura desta função:

void Recurso2(int i) {
    if(i>=5) return;
    Recurso2(i+1);         // CHAMADA RECURSIVA
    printf("%d ", i);      // PROCESSAMENTO
}

Aqui, a chamada recursiva acontece antes do comando de imprimir. Isso caracteriza uma recursão em pós-ordem.

  • Execução: Chama para 1 sem imprimir nada ainda. Só imprime quando a recursão volta (retorna).
  • Resultado: A primeira impressão será a do último valor válido (4), indo para trás até 0. Sequência: 4 3 2 1 0.

Resumo Comparativo

FunçãoOrdem da ChamadaTipo de RecursãoSaída Esperada
Recurso1Print \rightarrow ChamaPré-ordem0 1 2 3 4
Recurso2Chama \rightarrow PrintPós-ordem4 3 2 1 0

Portanto, a alternativa que descreve corretamente o tipo de recursão e a saída gerada por ambas as funções é a A.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Matemática — Cálculo

Ver mais Matemática — Cálculo resolvidas

Tem outra questão de Matemática — Cálculo?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.