Jump to content

Fatorial de um número


Ventura
 Share

Go to solution Solved by pwseo,

Recommended Posts

Última dúvida!

Quero calcular o fatorial de um numero, o código funciona na perfeição, mas tenho dúvidas em relação a 2 linhas de código:

fact=`expr $fact \* $num` #multiplicar o factorial pelo numero
num=`expr $num - 1` #por exemplo, inserimos o nr 5 e ele vai até ao nr 1 a multiplicar, por exemplo 5*4*3*2*1 ????

Estás 2 linhas de código fazem aquilo que eu disse ou nem por isso?

#!/bin/bash
#Vamos introduzir um numero a nossa escolha e o programa vai calcular o fatorial


echo "Insere um numero"
read num
fact=1 #vamos inserir apenas um argumento
while [ $num -ge 1 ]
do
       fact=`expr $fact \* $num` #multiplicar o factorial pelo numero
       num=`expr $num - 1` #forma para calcu
done
echo "Fatorial é $fact"
Edited by pwseo
tags code, syntax highlight.
Link to comment
Share on other sites

  • Solution

Ventura,

Antes de começar, um reparo: quando colocas excertos de código nos teus posts deves fazê-lo recorrendo às tags code apropriadas, de modo a preservar a indentação (vulgo «espaçamento do código») e até mesmo colorir o código de acordo com a linguagem utilizada (que é o que tenho feito). Se tiveres dúvidas quanto a isso, posso esclarecer-te rapidamente.

E agora relativamente à tua dúvida:

# esta linha guarda em $fact o valor da multiplicação de $fact por $num
fact=`expr $fact \* $num`

# esta linha guarda em $num o valor de $num - 1 (ou seja, diminui o valor de $num por 1)
num=`expr $num - 1`

O ciclo presente no segundo excerto de código é responsável por repetir estas duas operações até que $num não seja maior ou igual a 1, altura em que tudo é terminado, devolvendo o valor final.

Mais uma vez, aqui é essencial que tentes resolver com papel e caneta.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.