您将如何为数学创建n个嵌套循环?

时间:2018-11-23 08:46:57

标签: c# loops nested nested-loops

因此,我想尽全力了解如何使用变量来表示嵌套循环的次数

这是我编写的用于模拟p + geom_label(aes(fill=text, size=duration)) 输出的示例:

dimensions = 4

这将显示预期的输出:

static void Main(string[] args)
    {

        int dimensions = 4;    // e.g. for (1, 2, 3, 4), dimensions = 4

        Console.WriteLine($"{addNumbers(dimensions)}");

        Console.ReadKey();
    }

    static long addNumbers(int dimensions)
    {
        long number = 0;

        // hard coded to be dimensions = 4
        for (int h = 0; h <= dimensions; h++)
            for (int i = 0; i <= dimensions; i++)
                for (int j = 0; j <= dimensions; j++)
                    for (int k = 0; k <= dimensions; k++)
                        number += h + i + j + k;    // just some random math

        return number;
    }

因此,要解决该问题,我该如何编码才能允许 n个维度?感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

对于任意npm run build维度,您可以借助 array n来循环,该数组代表int[] address维度:

n

最后,让我们添加一些 Linq 来查看结果:

  static long addNumbers(int dimensions) {
    int[] address = new int[dimensions];

    // size of each dimension; not necessary equals to dimensions
    // + 1 : in your code, int the loops you have i <= dimensions, j <= dimensions etc.
    int size = dimensions + 1;

    long number = 0;

    do {
      //TODO: some math here
      //      i == address[0]; j = address[1]; ... etc.
      number += address.Sum(); 

      // next address: adding 1 to array
      for (int i = 0; i < address.Length; ++i) {
        if (address[i] >= size - 1)
          address[i] = 0;
        else {
          address[i] += 1;
          break; 
        }
      }
    }  
    while (!address.All(index => index == 0)); // all 0 address - items're exhausted

    return number; 
  }  

结果:

  int upTo = 5;

  string report = string.Join(Environment.NewLine, Enumerable
    .Range(1, upTo)
    .Select(i => $"{i} -> {addNumbers(i),6}"));

  Console.Write(report);