如何使用 Lua 的 For 循环创建可适应的反转数组?

我需要帮助创建这个可适应的反转数组,使用 for 循环,作为我的任务。

function for_loop2(a,b)
  local out = {}
-- a 是数组中的起始数字
-- b 是数组的长度
  --将你的代码放在这里 ****************

  --和这里 **********************************
  return out
end
is( for_loop2(4,4), {4,3,2,1}, 'For loop adaptable reversed array creation')
is( for_loop2(9,9), {9,8,7,6,5,4,3,2,1}, 'For loop adaptable reversed array creation')
is( for_loop2(4,9), {4,3,2,1,0,-1,-2,-3,-4}, 'For loop adaptable reversed array creation')
report()

除了 https://www.lua.org/pil/contents.html 外,我可以参考的任何材料都将非常感激,因为我需要更多的示例来理解这些概念。

点赞
用户6632736
用户6632736
function for_loop2( a, b )
    local out = {}
    -- 从4开始,直到a - b + 1结束,每次i减1
    for i = a, a - b + 1, -1 do
        out[#out + 1] = i
    end
    return out
end
is( for_loop2(4,4), {4,3,2,1}, '循环创建适应性反转数组')
is( for_loop2(9,9), {9,8,7,6,5,4,3,2,1}, '循环创建适应性反转数组')
is( for_loop2(4,9), {4,3,2,1,0,-1,-2,-3,-4}, '循环创建适应性反转数组')
report()

在提议的解决方案中,i既是迭代器也是新表元素的值。这就是为什么它从a开始,以a-b+1结束——这是我们需要的表的最后一个元素的值,因为我们只需要b个元素,并且倒序进行(-1递增)。

或者可以这样做:

    for i = 1, b do  --默认增量为1。
        out[i] = a - i + 1
    end

或者

    for i = 0, b - 1 do  --默认增量为1。
        out[i + 1] = a - i
    end

区别在于你何时进行算术运算。

2020-09-27 13:05:09