Lua初识(6)_递归与迭代

递归:程序调用自身的编程技巧称为递归,是函数自己调用自己。一个函数在其定义中直接或间接调用自身的一种方法。它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量。


迭代:
        让程序对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。迭代是某个变量的重复推算,而递归是自身对自身的调用。
递归注意的地方:
1,递归就是在过程或函数里面调用自身;
2,在使用递归时,必须有一个明确的递归结束条件,称为递归出口。


递归分为两个阶段:
1,递推,把复杂的问题的求解,推到比原问题简单一些的问题的求解;
2,回归:当获得最简单的情况后,逐步返回,依次得到复杂的解。


function DiGUi(i)
if i < 2 then
return 1
else
j = DiGUi(i - 1) + i
return j
end
end


function DieDai(i)
local s = 0
for j = 1, i , 1 do
s = s + j
end
return s
end;


迭代器与泛型for
在lua中,常常用函数来描述迭代器,它能够用来遍历某些几何中的部分或全部元素,每次调用该函数(迭代器)就返回几何的下一个元素。也就是我们用迭代器来对几何内的每一个元素的操作。他符合了迭代概念的特性。




for 变量列表 in  迭代器 do
语句块
end
--for example
--[-- 迭代--]
function myps(num) -- 定义迭代器
return mydd, num, 0 -- 返回迭代函数,待遍历的集合,控制变量
end


function mydd(num, i) -- 将num和i传入迭代函数
i = i + 1;
local v = num[i]
if v then
return i, v
else
return nil, nil
end
end


a = {"one", "two", "three"}
for k, v in myps(a) do
print(k..","..v)
end






























  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值