C#实现数组1与逆序数组2乘积和数组3对应元素相乘的方法
实现代码
你需要在第一次计算乘积的基础上,再和原始array3逆序后的结果做二次对位相乘即可,注意要提前保存原始array3的逆序结果,避免后续赋值操作覆盖原始值导致计算错误。
计算逻辑验证(匹配你的示例)
- 逆序
array2得到[17,16,15,14,12],和array1对位相乘得到中间数组[17,32,45,56,60] - 逆序原始
array3得到[1,2,7,4,8],和中间数组对位相乘得到最终结果[17,64,315,224,480]
完整可运行代码
int[] array1 = {1, 2, 3, 4, 5}; Console.Write("\nArray 1: "); Console.WriteLine(String.Join(", ", array1)); int[] array2 = {12, 14, 15, 16, 17}; Console.Write("Array 2: "); Console.WriteLine(String.Join(", ", array2)); int[] array3 = {8, 4, 7, 2, 1}; Console.Write("原始Array 3: "); Console.WriteLine(String.Join(", ", array3)); // 预存原始array3的逆序结果 var reversedArray3 = array3.Reverse().ToArray(); // 两次对位相乘计算最终array3 array3 = array2.Reverse() .Zip(array1, (a2Rev, a1) => a2Rev * a1) .Zip(reversedArray3, (midValue, a3Rev) => midValue * a3Rev) .ToArray(); Console.Write("\nArray1与逆序Array2的中间乘积: "); Console.WriteLine(string.Join(", ", array2.Reverse().Zip(array1, (x, y) => x * y))); Console.Write("最终Array3输出: "); Console.WriteLine(string.Join(", ", array3)); Console.Read();
内容的提问来源于stack exchange,提问作者hahahahahaha
相关产品推荐
相关产品推荐

