您的位置:首页 > 其它

猴子摘香蕉一次可以摘1个或2个,总共50个,问有多少种摘法?

2015-04-10 21:00 441 查看
问题来自知乎

等我写完发现,知乎上都比我写的好,我快哭了!!!

等我写完之后发现不就是那啥啥函数,贴上lua代码

N很大的时候,估计是抗不住了,代码还需要优化。

function banana( n )
local c = 1;
if n == 0 then
return 0
elseif n == 1 then
return 1
elseif n == 2 then
return 2
end
return (banana(n - 1) + banana(n - 2)) * c;
end

for i = 1,  10 do
print(banana(i))
end


优化后的代码:

local know = {}

function banana( n )
if know
then
return know

end
local c = 1;
if n == 0 then
know
= 0
return 0
elseif n == 1 then
know
= 1
return 1
elseif n == 2 then
know
= 2
return 2
end
local r = (banana(n - 1) + banana(n - 2)) * c;
know
= r
return r
end

for i = 1,  50 do
print(i, banana(i))
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐