欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Lua尾调用

程序员文章站 2022-05-06 09:37:44
...

什么叫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

Lua尾调用

如果将代码改变一下

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

运行 直接就是栈溢出了(感兴趣的同学可以自己尝试一下)
Lua尾调用

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

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

相关标签: lua 堆栈