你怎麼會遍歷在Javascript/jQuery的以下幾大系列:如何迭代該系列:1,-2,3,-4,5,-6,7,-8,...?
1, -2, 3, -4, 5, -6, 7, -8, ...
這是我如何做到這一點:
n = 1
while (...) {
n = ((n % 2 == 0) ? 1 : -1) * (Math.abs(n) + 1);
}
是否有一個更簡單的方法?
你怎麼會遍歷在Javascript/jQuery的以下幾大系列:如何迭代該系列:1,-2,3,-4,5,-6,7,-8,...?
1, -2, 3, -4, 5, -6, 7, -8, ...
這是我如何做到這一點:
n = 1
while (...) {
n = ((n % 2 == 0) ? 1 : -1) * (Math.abs(n) + 1);
}
是否有一個更簡單的方法?
你可以保持兩個變量:
for (var n = 1, s = 1; ...; ++n, s = -s)
alert(n * s);
我喜歡它!非常好:) – 2011-06-05 13:23:44
這很好,但它*更簡單*? – Orbling 2011-06-05 13:37:46
嗯,它非常直觀和可讀:) – 2011-06-05 14:06:00
如何:
while (...)
{
if (n * -1 > 0) { n -= 1; }
else { n += 1; }
n *= -1;
}
似乎是最簡單的方法。
這看起來是正確的,並不比這更簡單。儘管如果您從n = 1
開始,而不是n % 2 == 0
(通常是較慢的操作),則可以使用n < 0
。
否則,您將需要兩個變量。
這是簡單
x = 1;
while (...) {
use(x);
x = - x - x/Math.abs(x);
}
或
x = 1;
while (...) {
use(x);
x = - (x + (x > 0)*2 - 1);
}
或者更簡單(如果你不需要真正的「增量」的變量,但只是使用的值)
for (x=1; x<n; x++)
use((x & 1) ? x : -x);
您可以隨時使用以下方法:
for (var i = 1; i < 8; i++) {
var isOdd = (i % 2 === 1);
var j = (isOdd - !isOdd) * i;
}
這是相似的,順便說一下,你會怎麼弄的符號(-1三態,0或1)一些在JavaScript的:
var sign = (num > 0) - (num < 0)
如何:
var n = 1;
while(...)
n = n < 0 ? -(n - 1) : -(n + 1);
for (var n = 1; Math.abs(n) < 10; (n ^= -1) > 0 && (n += 2))
console.log (n);
也許它有訣竅,但它是不可讀的.... – 2011-06-05 13:58:05
怎麼樣位操作 -
n = 1;
while(...)
{
if(n&1)
cout<<n<<",";
else
cout<<~n+1<<",";
}
沒有什麼比這個好!
您的代碼不打印1. – ceving 2011-06-05 13:20:37