1、楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编一程序列出每一种走法。

function Way(n)
    local ans = {}

    if n == 1 then

        table.insert(ans,{1})
        return ans

    elseif n == 2 then
        local tmp1 = {1, 1}
        local tmp2 = {2}
        table.insert(ans, tmp1)
        table.insert(ans, tmp2)
        return ans;
    else

        local ans1 = Way(n-1)
        for i , v in pairs(ans1) do
            table.insert( ans1[i], 1)
            table.insert(ans, ans1[i])
        end

        local ans2 = Way(n-2)
        for i , v in pairs(ans2) do
            table.insert( ans2[i], 2)
            table.insert(ans, ans2[i])
        end


        return ans
    end
end


ans = Way(10)

for i,v in pairs(ans) do
    print( "solve " .. i .. ": ".. table.concat(ans[i], "-") )
end
代码示例

 

posted @ 2017-11-28 14:26  吴筱军  阅读(111)  评论(0)    收藏  举报