嗨,我有一个数组:int [] num = new int[6]{1,2,2,1,1,2};
我想将元素0的值与其他每个值相乘,然后我想将元素1的值乘以元素2到最后一个元素的值。然后将元素2的值乘以从3到结束的值,依此类推,直到我遍历整个数组。
到目前为止,我的努力看起来笨拙和冗长,所以我想知道是否有人能够向我展示实现目标的优雅方式。
非常感谢。
答案 0 :(得分:8)
您可以向后浏览数组并一次完成,而不是重复操作。
for (int i = num.Length - 2; i >= 0; i--)
{
num[i] *= num[i + 1];
}
提供8,8,4,2,2,2
答案 1 :(得分:2)
Enumerable.Range(0,num.Length)
.Select(i => num.Skip(i).Aggregate(1, (a, b) => a * b))
给出序列8,8,4,2,2,2。这是你的意思吗?
答案 2 :(得分:1)
这应该做的工作:
for (int i = 0; i < num.Length; i++)
{
// Multiply element i
for (int j = i+1; j < num.Length; j++)
{
num[i] *= num[j];
}
}
答案 3 :(得分:0)
int [] num = new int [6] {1,2,2,1,1,2};
int i = 0;
while (i < num.Length)
{
for (int j = i; j < num.Length;j++)
{
if((j+1)<num.Length)
num[i] = num[i] + num[j + 1];
}
Console.WriteLine(num[i]);
i++;
}