我试图实现这样的阶乘函数:
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
如何做到对不对?
答案 0 :(得分:2)
获得" 0"要工作,请告诉read
阅读一个数字:n = io.read("*n")
要获得正常符号而不是科学记数法,请使用
print("factorial of",n,"=",string.format("%0f",fac))