Lua中的递归函数写法实例_Lua

先看例子吧:

复制代码 代码如下:

function foo(i) --1 
    print("i: ", i) 
    return i 
end 
 
do 
 
--local foo; --2 
 local foo = function (i) --3 
    if i < 1 then 
        return 1 
    else 
        return i * foo(i - 1) --4 
    end 
 end 
 
 local a = foo(4) 
 print("a: ", a) 
 
end 

上面的例子,到if里面调用了foo(..),它会调用到do..end块里面的foo也就实现了局部函数的递归。

时间: 2024-08-03 02:59:38

Lua中的递归函数写法实例_Lua的相关文章

Lua中对table排序实例_Lua

lua中利用到的排序的基本上就是构造函数(table)了,为了便于和C区分开来,我俗称它为表单. 实例:(原理就是LUA集成的冒泡算法) 排序的一般姿势(对于只包含数字或者只包含字符串的简单数组) 复制代码 代码如下: table.sort(test) 扩展版 复制代码 代码如下: table.sort(test, function(a,b) return a.id<b.id end ) 实例一:值排序 1.数组模式 复制代码 代码如下: local test0 ={1,9,2,8,3,7,4,

Lua中调用C++函数实例_Lua

到这为止,大家对Lua和C++之间的通信应该有些熟悉了,今天我们来介绍最后一个操作. (旁白:什么?最后一个?要结束了么?太好了~!) 上一章传送门:http://www.jb51.net/article/55097.htm 1. Lua调用C++的函数 Lua要调用C++的函数还是蛮方便的,首先,我们来创建一个c++函数先: 复制代码 代码如下: public: static int getNumber(int num); int HelloLua::getNumber( int num )

Lua中的函数代码实例_Lua

在lua中,函数是一种"第一类值",它们具有特定的词法域. 第一类值:表示在lua中,函数与其他传统类型的值(数字和字符串)具有相同的权利,函数可以存储到变量中(无论全局变量还是局部变量)或者是table中,可以作为实参传递给其他函数,还可以作为其他函数的返回值. 词法域:是指一个函数可以嵌套在另一个函数中.内部的函数可以访问外部函数中的变量. 看例子代码: 复制代码 代码如下: do       function foo(a, b, c)          print(a, b, c

Lua中数字for循环实例_Lua

看以下代码: 复制代码 代码如下: for i=1,2 do    print(i)    i=3  end  输出是什么?如果习惯了C/C++语言,会觉得因为改变了控制变量i为3,所以在执行第二次循环体之前判断不通过,所以输出是1. 但结果输出是1和2,即虽然改变了i,但循环还是执行了2次.这是为什么呢? 看了lua的源代码,发现在语法分析阶段,表达式中的i(也叫控制变量)和循环体中的i并不是一个值,其实表达式中的i叫internal index,循环体中的i叫external index.

Lua中的函数写法简明示例

  这篇文章主要介绍了Lua中的函数写法简明示例,本文是一篇个人学习笔记,简单的记录了Lua函数的写法,需要的朋友可以参考下 函数定义:用关键字function定义函数,以关键字end结束 局部变量:用关键字local定义.如果没有用local定义,即使在函数内部定义定义的变量也是全局变量! 函数可以有多个返回值:return a,b,c... 平行赋值:a,b=c,d 全局变量:前面的代码定义了三个全局变量:foo,r1,r2 这是我写的第一个Lua函数: 复制代码 代码如下: functio

LUA中的闭包(closure)浅析_Lua

之前对closure一知半解,在网上也找不到一篇文章能把它说清楚,今天好像第一次对它有点清晰的了解 了,写个BLOG记念一下 lua的函数是一种 First-Class Value 的东西, 到底是啥? 就是它们与传统类型的变值没啥区别, 可以 存到一个变量中, 可以 存到table中, 可以 作为实参传递给其它函数, 可以 作为其它函数的返回值. 它们还具有特定的词法域(Lexical Scoping), 也就是说, 一个函数可以嵌套在另一个函数中, 内部的函数可以访问外部函数中的变量. 如下

详解Lua中的变量相关知识点_Lua

 变量不过是存储到区域项目可以操作的名称.它可以容纳不同类型的值,包括函数和表格. 变量名可以由字母,数字和下划线.它必须以字母或下划线.大写和小写字母是不同的,因为Lua是区分大小写的.有八种基本类型值在Lua中: 在Lua,尽管我们没有变量的数据类型,我们基于该变量范围的三种类型.     全局变量:所有的变量默是全局除非显式地声明为局部.     局部变量:当类型被指定为局部的一个变量,它的范围是有限的在自己的范围内使用.     表字段:这是一种特殊类型的变量,可以除了nil,包括功能不

Lua中的闭包学习笔记_Lua

之前介绍 Lua 的数据类型时,也提到过,Lua 的函数是一种"第一类值(First-Class Value)".它可以: 存储在变量或 table (例如模块和面向对象的实现)里 复制代码 代码如下: t = { p = print } t.p("just a test!") 作为实参(也称其为"高阶函数(higher-order function)")传递给其他函数调用 复制代码 代码如下: t = {2, 3, 1, 5, 4} table

详解Lua中的数组概念知识_Lua

 数组是有序的对象的装置,它可以是包含含有多个行和列的行或多维阵列的集合的单个二维数组. 在Lua中,数组是使用索引表与整数实现的.数组的大小是不固定的,它可以增长基于我们需要受存储器限制.一维数组 一维数组可以用一个简单的表结构来表示,可以初始化,使用一个简单的for循环读取.如下例子所示. 复制代码 代码如下: array = {"Lua", "Tutorial"} for i= 0, 2 do    print(array[i]) end 当我们运行上面的代码