Fibonacci的尾递归实现

原创 2015年11月18日 08:58:56

前段日子面试,碰到的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()


相关文章推荐

fibonacci的几种实现及尾递归

Java代码   /**   * java version "1.6.0_17"   * 尾递归与迭代实现具有相当的性能;   * 缓存实现的性能略高于非尾递归实现;   * 递...
  • judyge
  • judyge
  • 2015年10月28日 22:25
  • 265

非递归实现fibonacci数列

  • 2012年10月20日 18:10
  • 542KB
  • 下载

fibonacci递归实现

  • 2010年11月23日 19:27
  • 412B
  • 下载

由斐波那契数列(Fibonacci)谈递归(Recursion)内部实现

一般说到递归,很多人第一时间可能都会想到斐波那契数列(Fibonacci),(注:斐波纳契,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……数学上,斐波纳契数列以如下被以...

Fibonacci递归与非递归实现

  • 2013年02月06日 15:13
  • 766B
  • 下载

迭代与递归(及异同点的简单分析)以及Fibonacci数列的两种实现

迭代 迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的...

VB 递归制作Fibonacci函数

  • 2010年06月07日 15:17
  • 37KB
  • 下载

C预言fibonacci函数非递归版

  • 2013年09月26日 23:30
  • 492B
  • 下载

Fibonacci数列的递归与非递归实现

Fibonacci(斐波那契)数列定义: (1)递归实现 思想简单,无需赘述,实现如下: // 递归方法复杂度O(2^n),计算到n=41已达到计算机的极限 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Fibonacci的尾递归实现
举报原因:
原因补充:

(最多只允许输入30个字)