先看例子吧:
function foo(i) --1
print("i: ", i)
return i
end
do
--local foo; --2
local foo = function (i) --3
if i < 1 then
return 1
else
return i * foo(i - 1) --4
end
end
local a = foo(4)
print("a: ", a)
end
上面的例子,到if里面调用了foo(..),它会调用到do..end块里面的foo也就实现了局部函数的递归。