>> O que acontecerá com o seu programa se você inserir um número negativo?
- em calculo tem algo parecido chamado função gama, mas, o propósito aqui é calcular fatorial que não permite números negativos.
- inserir um numero negativo, parece que a função iria rumo ao infinito
>>Modifique o exemplo para evitar esse problema.
--
function fact (n)
if (n < 0) then error("numero "); end -- se for valor informado menor que zero (ou poderia ate ser menor/igual a -1)
if n == 0 then return 1; else return n * fact(n-1); end
end
print("entre com um número:");
a = io.read("*number");
a = ( tonumber( string.format("%.0f", a)) or nil); -- converte o que o usuario informou para um numero E tira as casas decimais OU retorna 'nil'
if (not a) then error("entrada de dados invalida"); end
print( fact(a) );
--
--
--