数组中的数组和数组中的数组

时间:2017-11-17 08:56:15

标签: c#

我需要使用数组写一个阶乘,但问题只是显示 120 五次,我想要的是 1,2,6,24,120 显示在textBox中

int factProg = 1;
public void factArray(int[] arr)
{   
    for (int i = 0; i < arr.Length; i++)
    {
        factProg = factProg * arr[i];
    }
}



int[] arr = {1,2,3,4,5};

for (int i = 0; i < arr.Length; i++)
{
    factArray(arr);
    textBox1.Text += Convert.ToString(factProg);
    textBox1.Text += Environment.NewLine;
}

2 个答案:

答案 0 :(得分:2)

简单地说 - 你的factArray方法总是计算整个数组长度的阶乘,这是一个固定的大小。您需要传递一个额外的参数 - 作为您想要停止计算的数组中的位置

如果您想使用数组计算,请尝试此操作:

int factProg;
public void factArray(int[] arr, int len)
{   
  factProg = arr[0];
  for (int i = 1; i <= len; i++)
  {
    factProg = factProg * arr[i];
  }
}

int[] arr = {1,2,3,4,5};

for (int i = 0; i < arr.Length; i++)
{
  factArray(arr, i);
  textBox1.Text += Convert.ToString(factProg);
  textBox1.Text += Environment.NewLine;
}

您需要在方法中添加一个不超过数组长度的检查。

答案 1 :(得分:0)

请找到以下代码

public static void FactorialJohn(int[] arr)
            {          

                List<int> Resarr = new List<int>();
                arr.ToList().ForEach(x => Resarr.Add(Enumerable.Range(1, x).Aggregate((a, b) => a * b)));

                foreach (var item in Resarr)
                {
                    Console.WriteLine(item);
                }
            }

上面的代码为您提供了数组中每个元素的因子。