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

来源:互联网 发布:ubuntu桌面图标消失 编辑:程序博客网 时间:2024/04/27 20:29

使用lua语言解出下题,分别用递归、迭代二种方式, 写出详细的代码:

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

例:3阶台阶的走法是

{

{ 1, 1, 1, },

{ 1, 2, },

{ 2, 1, },

}

递归:

function SteupInput( Input,Num )if Input==1 thenprint(Num .." 1 ")m = m + 1elseif Input==2 thenprint(Num .." 1 1")print(Num .." 2")m = m + 2else print("请输入正确的阶层数")endendfunction Way( InputNnum,Steup )if InputNnum<=2 thenSteupInput(InputNnum,Steup)elsefor Num=1,2 doWay(InputNnum-Num,Steup .." "..Num)endendendprint("请输入阶层数")m = 0i = io.read("*number")io.write(Way(i," "))print("一共有" ..m.. "方法")


迭代:
function Way( n )resultAll = {}tempArr1 = {""}resultAll[1] = tempArr1tempArr2 = {" 1"}resultAll[2] = tempArr2for i=3,n+1 doresultAll[i] = {}for j = 1,#(resultAll[i-1]) dotable.insert(resultAll[i],resultAll[i-1][j].." 1")endfor j = 1,#(resultAll[i-2])dotable.insert(resultAll[i],resultAll[i-2][j].. " 2")endendfor i=1,#resultAll[n+1] doprint(resultAll[n+1][i])endendprint("请输入阶层数")n = io.read("number")io.write(Way(n))


0 0
原创粉丝点击