2012-07-27 52 views
1

這是我的一個簡單程序的代碼,它查找表中最大的數字,並返回數字和索引。我的問題是,該方案沒有消極的工作。Lua Max Number Finder

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,並且處於第三位。當我將數字設置爲{-1,-2,-3}時,它會返回「0 nil」而不是「-1 1」。

謝謝!

回答

4

您的默認值是錯誤的。 他們應該

local maxcount = t[1] 
local maxindex = 1 

您正在接受 「0零」,因爲

  • maxindex是不確定的,直到if條件value > maxcount是真實的。

  • 默認maxcount值爲0,這比所有的負數大。

+0

謝謝!爲了得到正確的底片索引,我必須將maxindex設置爲1而不是0. – 2012-07-27 04:54:28

+0

謝謝。更新了我的答案。 – 2012-07-27 14:30:13

4

maxcount必須在開始時設置爲較大的負數,而不是零。請嘗試-math.huge