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
如果将代码改变一下
--非尾调用
function RecurFunc(num)
if(num >0) then
return RecurFunc(num-1)+0
else
return -1
end
end
运行 直接就是栈溢出了(感兴趣的同学可以自己尝试一下)
lua 里 如果return 一个函数的话是不会占用堆栈空间的 如果加上一个0 则需要在堆栈上申请空间 当次数过多的时候自然 堆栈就满了
所以在写lua代码的时候可以利用尾调用来 优化空间的作用.
上一篇: C++ ——学生成绩管理系统
下一篇: c/c++内存管理理解