【发布时间】:2019-05-14 14:31:49
【问题描述】:
举个例子
给定以下数组,inputArray: [2,3,6,8]
结果数组将是:resultArray: [144,96,48,36]
resultArray[0] = inputArray[1] * inputArray[2] * inputArray[3]
resultArray[1] = inputArray[0] * inputArray[2] * inputArray[3]
resultArray[n] = inputArray[0] *...* inputArray[n-1] * inputArray[n+1] *...* inputArray[last]
我已经编写了如下代码,但是如何使用 for 或其他循环进行此计算。
static void multiply()
{
int[] inputArray = { 2, 3, 6, 8 };
int[] resultArray = { 1, 1, 1, 1 };
for (int i = 0; i < inputArray.Length; i++)
{
Console.Write(inputArray[i] + " ");
}
Console.WriteLine();
//for (int i = 0; i < inputArray.Length; i++)
//{
// resultArray[i] = inputArray[0] * inputArray[i - 1] * inputArray[i + 1];
//}
resultArray[0] = inputArray[1] * inputArray[2] * inputArray[3];
resultArray[1] = inputArray[0] * inputArray[2] * inputArray[3];
resultArray[2] = inputArray[0] * inputArray[1] * inputArray[3];
resultArray[3] = inputArray[0] * inputArray[1] * inputArray[2];
for (int i = 0; i < resultArray.Length; i++)
{
Console.Write(resultArray[i] + " ");
}
}
【问题讨论】:
-
为什么不将所有数字相乘,然后将该数字除以数组中第 i 个数字中的数字?
-
@Andersnk 您应该将其添加为示例的答案
-
@Andersnk 如果遇到大量数字,您的方法将失败,例如
{ 1001, 1002, 1003, 1004 }. -
@Andersnk,如果任何值为零,则将不起作用。
-
如果提供的任何答案有帮助,礼仪是将其标记为“答案”,并可能对其有用性表示赞同。这可以防止这个问题出现在 SOF 中的“显示未回答的问题”下,并且还可以给帮助你的人更多的声誉。