在兩個方向
回答
如果你不介意的內環出現3次:
f(0);
for (var i = 1; i <= 3; ++ i) {
f(i);
f(-i);
}
2倍與if
:
for (var i = 0; i <= 3; ++ i) {
f(i);
if (i > 0)
f(-i);
}
單時間,但有一個醜陋的表達式:
for (var j = 1; j <= 7; ++ j) {
var i = j/2;
if (j % 2) i = -i;
f(i);
}
f(0); //do stuff with 0
for(var i = 1; i<len; i++) //where len = positive boundary
{
f(i); //do stuff with i
f(-i); //do stuff with -i
}
應該做你想做的事
+1;你可能不得不將do_stuff提取到一個單獨的函數中,以避免代碼重複,否則它非常漂亮。 – 2010-07-01 09:01:21
+1,爲簡單起見 – 2010-07-01 09:02:52
-1,爲了簡化 – mario 2010-07-01 09:16:11
每一個循環,你似乎都要加入n*(-1)^(n+1)
,其中n是你當前正在採取的步驟,從1開始,從i = 0開始。
initialize i = 0
n=0, i+=0*(-1)^1 # 0
n=1, i+=1*(-1)^2 # 1
n=2, i+=2*(-1)^3 # -1
n=3, i+=3*(-1)^4 # 2
等
從這裏,這取決於你想在寫什麼語言。迭代從n = 0
到哪裏都會停止。
編輯這是一個不好的答案。但有趣= d
(我補充說,最後一點,因爲只要我做了修改,有人downvoted我=()
+1這是我直接想到的答案:) – NibblyPig 2010-07-01 09:15:13
for (int i = 0; i < 10; i++)
{
int div = i/2;
int mod = i % 2;
int offset = mod == 0 ? div : -div;
}
我用正弦函數:
for ($i = 0; $i < 10; $i++)
{
echo round(0.5 * $i * sin((0.5 + $i) * M_PI))."\n";
}
對下降子彈的解決方案進行修改,即可在沒有特殊情況的情況下處理0索引案例。
//do stuff with 0
for(int i = 0; i< (arrayLength/2); i++)
{
//do stuff with i
if(-i != i)
{
//do stuff with negIndex
}
}
這個循環有一個模式。上的數字線看它 - 它是這樣:
- 0步向後
- 1步驟向前
- 2步向後
- 3步向前
- 4步驟向後
這裏有一個解決方案 - 在循環的每次迭代中不斷增加步長,並且每次都翻轉方向(向前/向後)。繼續添加到當前值。
// n is the number of elements to generate
for(var i = 0, value = 0, dir = -1; i < n; i++) {
value = value + (dir * i);
console.log(value);
dir = dir * -1; // reverse direction
}
在JavaScript 1.7使用generators另一種解決方案,其是相同的@ FallingBullet的solution但更美觀的我的眼睛:)
function sequence() {
var i = 0;
yield i;
while(true) {
i++;
yield i;
yield -i;
}
}
var seq = sequence();
seq.next(); // 0
seq.next(); // 1
seq.next(); // -1
seq.next(); // 2
...
在C. N的值是總您希望產生的序列中的數值。
int i, n = 0, m = 1;
for (i = 1; i < N; i++, m = -m) {
/* n is the next in the sequence */
n += m * i;
}
只是一個增加一個減法和否定:
for(int i=0, d=1, f=-1; i<10; i+=d, d=f-d, f=-f)
{
printf("%d\n", i);
}
產生的內循環:
push esi
push offset string "%d\n" (0D20F4h)
call dword ptr [__imp__printf (0D20A4h)]
mov eax,ebx
add esi,edi
sub eax,edi
add esp,8
neg ebx
mov edi,eax
cmp esi,0Ah
jl wmain+10h (0D1010h)
對於它的價值,這是我自己的問題的解釋。
for (var i = 0; i > -8; i = (i<=0) - i) // arbitrary condition stops loop at -8
我可能會一起去:
for (var i = 0; i <= max; i = (i <= 0) ? -i + 1 : -i)
{
f(i);
}
- 1. 在這兩個方向
- 2. 顯示在兩個方向
- 3. Mod_rewrite在兩個方向?
- 4. 兩個ViewControllers方向
- 5. XNA在兩個方向(一個是相反方向)
- 6. CSS轉換 - 兩個方向?
- 7. iPhone方向 - 兩個盒子
- 8. RecyclerView - GridLayoutManager - 在兩個方向上滾動
- 9. 在兩個方向上節儉RPC
- 10. 在X方向旋轉兩個UIImageView
- 11. 在兩個方向動畫滾動
- 12. 無限UIScrollView在兩個方向
- 13. 在Unity中向兩個方向旋轉門
- 14. Android - 只鎖定方向到兩個方向
- 15. (PHP/OOP)方法不會在兩個方向上工作
- 16. jQuery的兩個方向一定時間
- 17. WinRT ISupportIncrementalLoading查看兩個方向
- 18. 的mod_rewrite不工作的兩個方向
- 19. 創建可循環兩個方向
- 20. 視差滾動兩個方向
- 21. 兩個方向的Nginx位置配置
- 22. React Native ScrollView滾動兩個方向
- 23. 使用find()方法有兩個向量
- 24. 兩個引導輪播不同方向
- 25. scilab中兩個向量的協方差
- 26. 薩姆歸一化的兩個方向
- 27. 兩個方向滾動視圖
- 28. 無法按鈕點擊兩個方向
- 29. Matlab中兩個向量的直方圖
- 30. 比較兩個矢量方向MATLAB
既然你問一個具體的實現,你的工作是什麼語言? – 2010-07-01 08:58:29
php或js會很好 – antpaw 2010-07-01 08:59:45