1

这是我的一个简单程序的代码,它在表中找到最大的数字,并返回数字和它的索引。我的问题是该程序不适用于底片。

 numbers = {1, 2, 3}

 function largest(t)
   local maxcount = 0
   local maxindex
   for index, value in pairs(t) do
    if value > maxcount then
       maxcount = value
       maxindex = index
     end
   end
   return maxcount, maxindex
 end

 print(largest(numbers))

这段代码打印出“3 3”。最大的数字是 3,它在第 3 位。当我将数字设置为 {-1, -2, -3} 时,它返回“0 nil”而不是“-1 1”。

谢谢!

4

2 回答 2

4

maxcount必须在开始时设置为一个很大的负数,而不是零。尝试-math.huge

于 2012-07-27T04:42:56.757 回答
4

您的默认值是错误的。他们应该是

local maxcount = t[1]
local maxindex = 1

您收到“0 nil”是因为

  • maxindex在 if 条件value > maxcount为真之前是未定义的。

  • 默认maxcount值为 0,大于所有负数。

于 2012-07-27T04:42:45.500 回答