我是一般編程新手,現在正在學習 C#。
我剛剛寫了一個小程式,我必須以特定模式逐步執行 int[]。模式如下:
- 從陣列的最后一個條目開始 (int i)
- 形成 i 和(如果有的話)上面三個條目的總和(例如 i = i-1 ... i = i-3)
- 將 i 更改為 i -= 4(如果可用)
- 從步驟 2 重復直到 i = 0;
因此我寫了以下回圈:
for (int i = intArray.Length - 1; i >= 0; i -= 4)
{
for (int a = 1; a <= 3; a )
{
if (i - a >= 0)
{
intArray[i] = intArray[i - a];
intArray[i - a] = 0;
}
}
}
現在我的新任務是在模??運算的幫助下將我的代碼更改為僅使用1 個回圈。我確實了解模數的作用,但我不知道如何使用它來擺脫第二個回圈。
也許有人向我解釋一下?非常感謝您提前。
uj5u.com熱心網友回復:
在遍歷陣列時,想法是使用模 4 運算來計算將添加當前值的下一個索引。
這應該適用于任何陣列長度:
for (int i = 0; i < intArray.Length; i ){
// we check how far away we are from next index which stores the sum
var offset = (intArray.Length - 1 - i) % 4;
if (offset == 0) continue;
intArray[i offset] = intArray[i];
intArray[i] = 0;
}
uj5u.com熱心網友回復:
反向迭代陣列會使它變得更復雜一些,但是你想用模數擺脫內回圈可能是這樣的:
var intArray = Enumerable.Range(1, 15).ToArray();
for (int i = 1; i < intArray.Length - 1; i )
{
intArray[i - (i % 4)] = intArray[i];
intArray[i] = 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/445070.html
上一篇:我怎樣才能對這個陣列進行排序?
