lua面试

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

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

例:3阶台阶的走法是

{

{ 1, 1, 1, },

{ 1, 2, },

{ 2, 1, },

}

递归:

  1. function SteupInput( Input,Num )  
  2.     if Input==1 then  
  3.         print(Num .." 1 ")  
  4.         m = m + 1  
  5.     elseif Input==2 then  
  6.     print(Num .." 1 1")  
  7.     print(Num .." 2")  
  8.     m = m + 2  
  9.     else print("请输入正确的阶层数")  
  10.     end  
  11. end  
  12.   
  13. function Way( InputNnum,Steup )  
  14.     if InputNnum<=2 then  
  15.         SteupInput(InputNnum,Steup)  
  16.     else  
  17.         for Num=1,2 do  
  18.             Way(InputNnum-Num,Steup .." "..Num)  
  19.         end  
  20.     end  
  21. end  
  22.   
  23. print("请输入阶层数")  
  24. m = 0  
  25. i = io.read("*number")  
  26. io.write(Way(i," "))  
  27. print("一共有" ..m.. "方法")  


迭代:
  1. function Way( n )     
  2.     resultAll = {}  
  3.     tempArr1 = {""}  
  4.     resultAll[1] = tempArr1  
  5.     tempArr2 = {" 1"}  
  6.     resultAll[2] = tempArr2  
  7.     for i=3,n+1 do  
  8.         resultAll[i] = {}  
  9.         for j = 1,#(resultAll[i-1]) do  
  10.             table.insert(resultAll[i],resultAll[i-1][j].." 1")  
  11.         end  
  12.         for j = 1,#(resultAll[i-2])do  
  13.             table.insert(resultAll[i],resultAll[i-2][j].. " 2")  
  14.         end  
  15.     end  
  16.     for i=1,#resultAll[n+1] do  
  17.         print(resultAll[n+1][i])  
  18.     end  
  19. end  
  20.   
  21. print("请输入阶层数")  
  22. n = io.read("number")  
  23. io.write(Way(n))  

猜你喜欢

转载自blog.csdn.net/dongjingxia/article/details/78037279
LUA