【问题标题】:stack overflow error while implementing a Recursive Function(factorial)实现递归函数时出现堆栈溢出错误(阶乘)
【发布时间】: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


【解决方案1】:

要使“0”起作用,请告诉read 读取一个数字:n = io.read("*n")

要获得正规记数法而不是科学记数法,请使用

print("factorial of",n,"=",string.format("%0f",fac))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2014-08-27
    • 2017-09-05
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    相关资源
    最近更新 更多