1
function maxContSum(array)
    local len = #array
    local maxSum = 0
    local runningSum = array[0]
    local j = 0
    local start, finish = 0,0
    for i=0, len-1,1 do
        if runningSum > 0 then
            runningSum =runningSum + array[i]
        else 
            runningSum = array[i]
            j = i
        end
        if runningSum > maxSum then
            maxSum = runningSum
            start = j
            finish = i
        end
    print ("maxsum is ", maxSum)
   end
end

a = {-2, 2,3,4,5,-7,8,0,-1,1,2,3,4}
maxContSum(a)

これは私のコードです。しかし、私はこのエラーメッセージを受け取ります:

lua: maxContSum.lua:8: attempt to compare number with nil stack
traceback:
        maxContSum.lua:8: in function 'maxContSum'
        maxContSum.lua:24: in main chunk
        [C]: ?

助けが必要ですありがとうございます!

編集:問題が見つかりました。Lua配列インデックスは1から始まります:)

4

1 に答える 1

2

luaの配列は、0からではなく1からインデックスが付けられます

local runningSum = array[0]あるべきでlocal runningSum = array[1] あり、またj = 1

forループは1からnまで開始する必要があります

for i = 1, len, 1 do
于 2012-10-16T09:02:08.393 に答える