Analise o trecho de código PHP a seguir. function contador(...

Próximas questões
Com base no mesmo assunto
Ano: 2010 Banca: IADES Órgão: CFA Prova: IADES - 2010 - CFA - Designer |
Q507709 Programação
Analise o trecho de código PHP a seguir.

function contador($inicio, $fim)
{
if ($fim > $inicio)
{
return;
}
contador($inicio --, ++$fim);
}
$inicio = 5;
$fim = 2;
contador ($inicio, $fim);

Quantas vezes a função “contador()” será executada?

A quantidade de itens certos é igual a
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - 5

A questão envolve o entendimento da recursão em PHP, que é um conceito onde uma função chama a si mesma. Para identificar quantas vezes a função contador() será executada, precisamos acompanhar a lógica implementada no bloco de código.

A função contador() recebe dois parâmetros, $inicio e $fim, e realiza uma checagem condicional (if) para decidir se deve continuar chamando a si mesma ou não. O critério de parada é quando o valor de $fim for maior do que $inicio. Caso contrário, a função se chamará recursivamente, decrementando $inicio e incrementando $fim.

Se analisarmos o código, vemos que os valores iniciais fornecidos são $inicio = 5 e $fim = 2. A cada chamada recursiva, $inicio é decrementado (-- pós-fixado) e $fim é incrementado (++ pré-fixado), o que significa que em cada chamada, a diferença entre $inicio e $fim é reduzida em 2 unidades.

Vamos traçar as chamadas:

  • 1ª chamada: $inicio = 5, $fim = 2
  • 2ª chamada: $inicio = 4, $fim = 3
  • 3ª chamada: $inicio = 3, $fim = 4
  • 4ª chamada: $inicio = 2, $fim = 5
  • 5ª chamada: $inicio = 1, $fim = 6

Na 5ª chamada, a condição $fim > $inicio torna-se verdadeira, e a função retorna sem fazer uma nova chamada recursiva. Portanto, a função contador() é chamada 5 vezes antes de parar.

O conhecimento necessário para resolver a questão envolve a compreensão do mecanismo de recursão, a ordem de avaliação dos operadores de incremento e decremento em PHP, e a habilidade de rastrear a execução do código passo a passo.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

$inicio-- Pós-decremento Retorna $inicio, e então decrementa $inicio em um.

++$fim Pré-incremento    Incrementa $fim em um, e então retorna $fim.

$inicio = 5;

$fim = 2;

if ($fim > $inicio)

 

if (2 > 5)  // 1º execução

if (2 > 4) // 2º execução

if (2 > 3) // 3º execução

if (2 > 2) // 4º execução

if (2 > 1) // 5º execução

$inicio-- Pós-decremento = Retorna $inicio, e então decrementa $inicio em um, MAS NÃO ENVIA O VALOR COM DECREMENTO PARA A NOVA CHAMADA RECURSIVA.

++$fim Pré-incremento =  Incrementa $fim em um, e então retorna $fim, ENVIANDO O VALOR INCREMENTADO PARA A NOVA CHAMADA RECURSIVA

Função original -----------> Inicio = 5 Fim = 2

1ª chamada recursiva ---> Inicio = 5 Fim = 3

2ª chamada recursiva ---> Inicio = 5 Fim = 4

3ª chamada recursiva ---> Inicio = 5 Fim = 5

4ª chamada recursiva ---> Inicio = 5 Fim = 6

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo