Analise o código abaixo:
<?php
$num = 5;
if($num > 0){
$valor = $num;
for(________; __________;_______){
$valor = $valor * $i;
}
}else{
$valor = 0;
}
echo "!$num = $valor";
?>
Diante do código acima, na sequência, assinale a alternativa que preencha as lacunas corretamente de forma que apresente o resultado do fatorial de 5.
Temos que !5 é igual a 120.
Alternativas
Alternativa 1:
$i = ($valor); $i > 0; $i--
Alternativa 2:
$i = ($valor - 1); $i > 0; $i--
Alternativa 3:
$i = ($valor - 1); $i < 0; $i--
Alternativa 4:
$i = ($valor +1); $i > 0; $i++
Alternativa 5:
$i = ($valor - 1); $i >= 0; $i++
Soluções para a tarefa
A alternativa que preenche a lacuna corretamente é a 2) $i = ($valor - 1); $i > 0; $i--
O código dado apresenta o calculo de um fatorial, para podermos analisá-lo corretamente precisamos primeiro saber como funciona o fatorial.
O fatorial é o produto do números inteiros positivos consecutivos de um número natural n maiores ou iguais a n. Assim, o fatorial do número 5 é o produto do 5 pelo seus antecessores até o 1: 5 * 4 * 3 *2 *1 = 120
Analisando o código podemos observar que definimos a variavel num como sendo 5 e depois testamos se ela é maior que zero, caso ela seja, iniciamos o calculo do fatorial utilizando for como laço de repetição.
No for, precisamos definir um valor inicial, que é o indice inicial (i), um critério de parada e o passo. Nesse caso, o valor inicial é o antecessor do numero utilizado e vai se repetir enquanto o indice for maior que zero, com passo decrescente, ja que no fatorial utilizamos o antecessor do numero original (5).
Assim, o valor do fatorial se inicia em 5 e logo no primeiro laço ele é multiplicado por 4 (seu antecessor) e o valor do fatorial é atualizado para que haja uma nova repetição. Essa dinâmica pode ser melhor observada abaixo:
Primeira execução:
valor = 5 * 4
Segunda repetição:
valor = 20 * 3
Terceira repetição:
valor = 60 * 2
Terceira repetição:
valor = 120 * 1
Quando todas as repetições ocorrem, imprimimos o valor, que no caso é 120.
Espero ter ajudado, bons estudos!