我希望能夠通過如下所示的簡單計算獲得(非收斂)數字序列:0, 1, -1, 2, -2, 3, -3, 4, -4 ...
通過簡單的計算,我的意思是能夠使用從 1(或 0)開始的單個變數來完成,而無需重新排列此序列。
我在 Lua 中做了幾次(不成功)嘗試,原則上它應該是這樣的(這個例子只交替 0 和 1):
do
local n = 0
for i = 1, 10 do print(n)
n = n==0 and 1 or -n (n/n)
end
end
這可能嗎?如何?
更新:
我只是這樣成功:
local n, j = 0, 2
for i = 1, 10 do print(n)
n = n==0 and 1 or j%2==0 and -(n (n/math.abs(n))) or -n
j = j 1
end
但是我必須用第二個變數來幫助自己,我很想知道是否只有n它可以做到?
uj5u.com熱心網友回復:
整數是可數的。因此存在從自然數到整數的映射。您現在必須使用回圈來遍歷自然數,然后計算一個為您提供整數的函式:
-- 0, 1...10, -1...-10 -> 21 numbers total
for n = 1, 21 do
local last_bit = n % 2
local sign = 1 - (2 * last_bit)
local abs = (n - last_bit) / 2
print(sign * abs)
end
印刷
-0
1
-1
2
-2
...
10
-10
在 Lua 5.1 上;在較新的 Lua 版本上,您可以使用n // 2而不是(n - last_bit) / 2(1) 使用整數和 (2) 使提取 abs 更便宜。
uj5u.com熱心網友回復:
只需在每次迭代中“發射”n和“發射”:-n
for n = 0, 10 do
print(n)
print(-n)
end
uj5u.com熱心網友回復:
@EgorSkriptunoff 在評論我的問題時解決了我的問題,他的方法是:
n = (n > 0 and 0 or 1) - n
輸出:
local n = 0
for i=1,10 do io.write(n..", ")
n = (n > 0 and 0 or 1) - n
end
實際上給出:
0, 1, -1, 2, -2, 3, -3, 4, -4, 5,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/524671.html
標籤:数学lua
