該方法的基本前提是參數數組採用多維數組並繞着矩陣順時針將所有值順序推入arr,並將它們作爲整數列表返回。我在我的小遞歸方法中接收零值
然而,我似乎接收此錯誤:
`block in snail': undefined method `reverse' for nil:NilClass (NoMethodError)
這是我的方法:
def snail(array)
arr = []
loop do
return arr.flatten if array.empty?
arr << array.shift
array.map {|row| arr << row.pop}
arr << array.pop.reverse
array.map {|row| arr << row.shift}
end
end
這是測試參數:
[[1,2,3],[4,5,6],[7,8,9]
這是輸出我得到當我編輯第5行到這:
line 5: arr << unless NilClass then array.pop.reverse end
output: [1, 2, 3, 6, 9, nil, 4, 7, 5, 8, nil, nil]
預期回報:
[1, 2, 3, 6, 9, 8, 7, 4, 5]
爲什麼這些零值出現?
啊啊我以爲循環打破時array.flatten.empty?足以防止空陣列。所以在循環中斷之前返回nil?無論如何,它工作。謝謝! –
'array.flatten.empy?'break是可以的,但是數組可以在任何一步變空,而不一定在最後一步之後。另外,請注意我剛剛完成的編輯...算法存在一個小問題。 – SteveTurczyn
啊,是啊,我注意到昨天晚上我寫了一些更多的測試,非常感謝。我從來沒有意識到,它只檢查所有步驟完成後數組是否爲空。我認爲這是合乎邏輯的。 –