Lua尾调用

什么叫Lua尾调用 有什么作用?

简介:lua中可以在一个函数中,使用return返回另外一个函数,这种语法称为尾调用.

--尾调用例子
function funA(x)	
    return funcB(x)
end

废话不多说先上代码:以下代码运行的时候不管传入 num为10 或者 100000 它都可以正常输出-1

--尾调用
function RecurFunc(num)
      if(num>0) then
         return RecurFunc(num-1)
      else
         return -1
      end
 end

在这里插入图片描述

如果将代码改变一下

--非尾调用
function RecurFunc(num)
	if(num >0) then	
           return RecurFunc(num-1)+0
        else
           return -1
        end
 end

运行 直接就是栈溢出了(感兴趣的同学可以自己尝试一下)
在这里插入图片描述

lua 里 如果return 一个函数的话是不会占用堆栈空间的 如果加上一个0 则需要在堆栈上申请空间 当次数过多的时候自然 堆栈就满了

所以在写lua代码的时候可以利用尾调用来 优化空间的作用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值