Ventura Posted January 10, 2016 at 03:52 PM Report Share #591772 Posted January 10, 2016 at 03:52 PM (edited) Ú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 January 10, 2016 at 04:16 PM by pwseo tags code, syntax highlight. Link to comment Share on other sites More sharing options...
Solution pwseo Posted January 10, 2016 at 04:24 PM Solution Report Share #591778 Posted January 10, 2016 at 04:24 PM 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 More sharing options...
Ventura Posted January 10, 2016 at 04:31 PM Author Report Share #591780 Posted January 10, 2016 at 04:31 PM Com a tua explicação, já deu para entender. Muito obrigado! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now