递归函数
代码实践(一):实现数乘
1)原代码
function num_mul(n)
if n>1 then
return n*addnum(n-1)
end
end
print(num_mul(4))
报错信息:
F:\lua\lua54.exe: e:\LUA\Game\game5\test.lua:3: attempt to call a nil value (global ‘addnum’)
stack traceback:
e:\LUA\Game\game5\test.lua:3: in function ‘num_mul’
e:\LUA\Game\game5\test.lua:8: in main chunk
[C]: in ?
2)错误分析
因为lua函数不设置返回值,默认返回nil。当n=1的时候,不进入判断则返回nil,nil无法进行运算导致报错。
3)正确代码
function num_mul(n)
if n>1 then
return n*addnum(n-1)
end
return 1
end