使用循环解决 if number < than 200 previous numbers, return 1

Using loop to solve if number < than 200 previous numbers, return 1

我正在 lua 中编写一个小程序,我希望得到一些关于什么是最正确的方法来解决这个问题的指示。基本上,如果我的数字大于最后 200 个数字,return 1,否则 return 0.

我认为最好的方法是循环? 假设 x 是我的数字在 table 中的位置,然后我想检查它是否大于前 200 个数字,如果是 return 则在末尾为 1,如果不是则为 0。

while (x > x-a)
    do
        isbigger = 1;
        a = a+1;
        return isbigger;
    end

我不确定这是否是正确的语法明智,它在技术上也会 return 1 每次它通过循环时我只希望它在最后如果我的数字大于 200前一个。另外,如果它是假的(我猜想休息一下),如何摆脱循环? 感谢您的帮助,祝您有愉快的一天!

如果要遍历一组值,则应使用 for 循环。你也不希望从循环内部 return isbigger 因为它会过早地结束循环

local last = 10
local myNumber = 123
local numbers = {}

--Setup our example numbers table
math.randomseed(os.clock())
for i = 1, 40 do
    numbers[i] = math.random(1,200)
end

--Run comparison on our the last x values
local isBigger = true
for i = #numbers, #numbers - last, -1 do
    print(myNumber, numbers[i],  myNumber > numbers[i])
    isBigger= isBigger and myNumber > numbers[i]
end

print("isBigger is: " .. isBigger)
return isBigger and 1 or 0

示例输出

123 181 false
123 6   true
123 77  true
123 78  true
123 145 false
123 130 false
123 104 true
123 114 true
123 6   true
123 4   true
123 15  true
isBigger is: false

上面的 for 循环更适合理解正在发生的事情,但这个循环更适合使用,因为它会在发现显示 myNumber 不更大的结果后退出。

local isBigger = true
for i = #numbers, #numbers - last, -1 do
    print(myNumber, numbers[i],  myNumber > numbers[i])
    if not (myNumber > numbers[i]) then
        isBigger = false
        break
    end
end