Я попытался реализовать функцию факториала так:стек ошибка переполнения при реализации рекурсивной функции (факторный)
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)
Он работает отлично, пока я не дам 0
в качестве входных данных. Он возвращает
lua: factorial.lua:5: stack overflow
stack traceback:
factorial.lua:5: in function 'factorial'
Что я делаю неправильно?
Кроме того, он дает нормальный выход только до 16
. когда я даю n=17
, выход 3.55687428096e+014
Как это правильно?
'п = 17' ответ является правильным. Он просто напечатан в научной нотации. –
@JohnnyMopp да, что делать, чтобы получить только номер? в нормальном представлении. – Nuwanda
@Alaye http://stackoverflow.com/questions/1133639/how-can-i-print-a-huge-number-in-lua-without-using-scientific-notation –