实现递归函数(阶乘)时出现堆栈溢出错误
stack overflow error while implementing a Recursive Function(factorial)
我尝试实现这样的阶乘函数:
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
之前它工作正常。它returns
lua: factorial.lua:5: stack overflow
stack traceback:
factorial.lua:5: in function 'factorial'
我做错了什么?
此外,它仅在 16
之前提供正常输出。当我给出 n=17
时,输出是 3.55687428096e+014
如何正确处理?
要让“0”起作用,请告诉 read
读取一个数字:n = io.read("*n")
要获得普通记数法而不是科学记数法,请使用
print("factorial of",n,"=",string.format("%0f",fac))
我尝试实现这样的阶乘函数:
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
之前它工作正常。它returns
lua: factorial.lua:5: stack overflow
stack traceback:
factorial.lua:5: in function 'factorial'
我做错了什么?
此外,它仅在 16
之前提供正常输出。当我给出 n=17
时,输出是 3.55687428096e+014
如何正确处理?
要让“0”起作用,请告诉 read
读取一个数字:n = io.read("*n")
要获得普通记数法而不是科学记数法,请使用
print("factorial of",n,"=",string.format("%0f",fac))