Lua之尾调函数的用法 Lua之尾调函数的用法

--当函数的最后返回结果调用另一个函数,称之为尾调函数

1 function f(x)
2 return g(x)
3 end

--由于“尾调用”不会耗费栈空间,所以一个程序可以拥有无数嵌套的“尾调用”

1 function gf(n)
2 if n>0 then 
3 return gf(n-1)
4 end
5 end

--判断当前调用是一条“尾调用”的准则:一个函数在调用完另一个函数之后,是否就无其他事情需要做了
--下面举一下不是尾调用的例子

1 return g(x)+1 --不是尾调函数,因为还必须做一次加法 操作
2 return (g(x)) --不是尾调函数,因为必须调整为一个返回值
3 return x or g(x) --不是尾调函数,因为还需要进行比较的操作