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++;
}