【发布时间】:2016-11-14 21:58:39
【问题描述】:
我试图实现这样的阶乘函数:
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
如何做到正确?
【问题讨论】:
-
n=17答案是正确的。它只是用科学记数法打印的。 -
@JohnnyMopp 是的,怎么做才能得到这个数字?正常表示。
-
另外,要让“0”工作,告诉
read读取一个数字:n = io.read("*n") -
@JohnnyMopp 谢谢!
标签: function recursion lua factorial