码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-10 22:10:23      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:


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

等我写完之后发现不就是那啥啥函数,贴上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[n] then
        return know[n]
    end
    local c = 1;
    if n == 0 then
        know[n] = 0
        return 0
    elseif n == 1 then
        know[n] = 1
        return 1
    elseif n == 2 then
        know[n] = 2
        return 2
    end
    local r = (banana(n - 1) + banana(n - 2)) * c;
    know[n] = r
    return r
end

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



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

标签:

原文地址:http://blog.csdn.net/gamesofsailing/article/details/44984601

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!