Fibonacci的尾递归实现

前段日子面试,碰到的lua语言问题,大致是说对于一个Fibonacci数列,要求给定一个正整数n,就生成从0开始的n个Fibonacci数存入一个表中,然后打印出来,要求使用尾递归。

个人对lua也算是刚入手阶段,折腾几下总算做了出来,记下来免得过些日子又忘了……


local function fibonacci(n)
  local t = {}
  if n <= 0 then
    return t
  end
  local function fib(t, num1, num2)
    len = #t
    table.insert(t, len + 1, num1 + num2)
    if #t == n then
      return t
    else
      return fib(t, num2, num1 + num2)
    end
  end
  t = fib(t, -1, 1)
  return t
end

local function main()
  local fibt = fibonacci(50)
  for _, v in ipairs(fibt) do
    print(v)
  end
end
main()


阅读更多
文章标签: lua Fibonacci 尾递归
个人分类: Lua
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭