以下Lua Code:
math.log2 = function (x)
return math.log(x) / math.log(2)
end
...
for i = math.floor(math.log2(n)) - 1, math.floor(math.log2(n)) do
...
n是 >= 0的整數,要注意for有可能造成無窮迴圈,
因為math.log(0)是-inf,不會彈出錯誤,
所以造成for變成無窮迴圈,而不只是做兩次…
另外注意,-inf跟同樣是-inf比對是true, 例如:
ath.log(0) == -3/0
==> true
若是nan比對,一定是false, 例如:
math.log(-1) == math.log(-1)
==> false