function fact(i)
ret = 0
if i<0 then
print("小于0的阶乘无意义")
elseif i==0 then
ret=1
else
ret = i*fact(i-1)
end
return ret
end
尝试运行 这种情况可以正常输出:1
fact2 = fact
fact = nil
print(fact2(0))
但是,算1的阶乘的时候就不行了,所以lua代码是边编译,边执行的。fact2与fact函数拥有相同的解释,所以,当去找fact(1-1)的时候,发现fact已经被清空了,所以无法继续执行。
fact2 = fact
fact = nil
print(fact2(1))