j'ai essayé de mettre en œuvre une fonction factoriel comme ceci:erreur de débordement de la pile tout en mettant en œuvre une fonction récursive (factoriel)
function factorial(n)
if (n == 0) then
return 1
else
return n * factorial(n - 1)
end
end
io.write("number?")
n =io.read()
fac = factorial(n)
print("factorial of",n,"=",fac)
Il fonctionne très bien jusqu'à ce que je donne 0
comme entrée. Il renvoie
lua: factorial.lua:5: stack overflow
stack traceback:
factorial.lua:5: in function 'factorial'
Qu'est-ce que je fais mal?
En outre, il donne la sortie normale seulement jusqu'à 16
. quand je donne n=17
, la sortie est 3.55687428096e+014
Comment le faire correctement?
'n = 17' réponse est correcte. C'est juste imprimé en notation scientifique. –
@JohnnyMopp oui, que faire pour obtenir juste le numéro? en représentation normale. – Nuwanda
@Alaye http://stackoverflow.com/questions/1133639/how-can-i-print-a-huge-number-in-lua-without-using-scientific-notation –