如果有測試,需要將delta增加到特定值,則delta可以按照以下順序進行測試:1,2,3,... 15,16.如何獲得更精細的粒度序列:1,16,8,4,12,...?
但是要測試更精細的粒度,δ可以是這個序列:1,16,8,4,12,...(也就是我們嘗試1和16,這是兩個極端情況,然後我們嘗試8,這是一箇中間數,然後是4,中間是1和8,然後是12,中間是8和16)。
這個序列如何優雅地生成而沒有重複?
現在我有這個在Ruby中1.9.3:
$deltas = []
def getMidPoint(a, b)
return if (a - b).abs <= 1
midPoint = ((a + b)/2).to_i
puts "a = #{a}, b = #{b}, midPoint = #{midPoint}"
$deltas << midPoint
getMidPoint(a, midPoint)
getMidPoint(midPoint, b)
end
$deltas << 1
$deltas << 16
getMidPoint(1, 16)
p $deltas
但結果是:
[1, 16, 8, 4, 2, 3, 6, 5, 7, 12, 10, 9, 11, 14, 13, 15]
其實我可以添加一個「級別」的數量(存儲爲一個元組):所以對於8,它是2級,對於12,它也是2級(這個級別是遞歸級別),然後在最後我可以收集1級和2級等數字。 ,以獲得最終數組,並且它應該可以工作,但有沒有更好的解決方案?