C# 将数组中的元素相乘

C# 将数组中的元素相乘,c#,arrays,C#,Arrays,嗨,我有一个数组:int[]num=newint[6]{1,2,2,1,1,2} 我想将元素0处的值与其他值相乘,然后将元素1处的值与元素2至最后一个元素处的值相乘。然后将元素2处的值与从3到结尾的值相乘,依此类推,直到我遍历了整个数组 到目前为止,我的努力似乎笨拙而冗长,所以我想知道是否有人能向我展示一种优雅的方式来实现我的目标 非常感谢 这应该可以完成这项工作: for (int i = 0; i < num.Length; i++) { // Multiply element

嗨,我有一个数组:
int[]num=newint[6]{1,2,2,1,1,2}

我想将元素0处的值与其他值相乘,然后将元素1处的值与元素2至最后一个元素处的值相乘。然后将元素2处的值与从3到结尾的值相乘,依此类推,直到我遍历了整个数组

到目前为止,我的努力似乎笨拙而冗长,所以我想知道是否有人能向我展示一种优雅的方式来实现我的目标


非常感谢

这应该可以完成这项工作:

for (int i = 0; i < num.Length; i++)
{
    // Multiply element i
    for (int j = i+1; j < num.Length; j++)
    {
       num[i] *= num[j];
    }
}
for(int i=0;i

给出一个序列8,8,4,2,2,2。这就是你的意思吗?

你可以向后遍历数组,一次完成,而不是重复操作

 for (int i = num.Length - 2; i >= 0; i--)
 {
     num[i] *= num[i + 1];
 }

给出
8,8,4,2,2,2
int[]num=newint[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++;

        }
inti=0;
while(i如果((j+1)“笨拙而冗长”的尝试是什么样子的?你应该发布它们。笨拙而冗长的努力提供了有趣的阅读:)请发布一些东西,我们将帮助您使其变得优雅。重要的是要知道产品可能变得非常大,并且您可能会丢失与int数组的数据一致性。在您的场景中可能出现此问题吗?+1正是!对于大型数组,速度要快得多。O(n)与O(n^2)作为其他答案。这是非常慢的O(n^2)。但是,如果有“折回”方法(如
List.foldBack
)可用,然后它可以非常快速地完成。是的。Ray得到了我的支持!OTOH我不希望对太多的项目执行聚合乘法,因为它很容易溢出。你知道加法不是乘法吗?一旦修复,在功能上与另一个答案相同?
        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++;

        }