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

时光旅行企鹅

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

这是我编写的用于模拟输出的示例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;
    }

这将显示以下内容的预期输出:

5000

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

德米特里·拜琴科(Dmitry Bychenko)

对于任意n尺寸,您可以借助代表尺寸数组 int[] address进行循环n

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

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

  int upTo = 5;

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

  Console.Write(report); 

结果:

1 ->      1 
2 ->     18
3 ->    288
4 ->   5000 // <- We've got it: 5000 for 4 dimensions
5 ->  97200

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

您将如何嵌套结构?

您将如何实现基本的事件循环?

您将如何为 Windows 和 Ubuntu 双启动创建“共享 /home”分区?

您将如何为 Ruby 安装 OpenSSL 软件包?

您将如何为对象产生滚动效果?

您将如何根据用户输入创建X个工作线程?

您将如何创建具有两个层次类别的动态可视化?

创建N个嵌套的for循环

您将如何优化这个短而慢的Python循环?

您将如何创建“手动” django迁移?

您将如何使用jQuery创建“类型”效果?

您将如何创建在Python中重试的选项?

您将如何把握两个矩阵的位置?

您将如何使两个<div>重叠?

您将如何使用 JavaScript 创建一个取消隐藏/隐藏内容的切换按钮?

您将如何创建一个函数来使用 python 查找少于 4 个字符的单词的频率?

如何为包含特定字符串的列表中的每个唯一元素创建[n]个元素的随机样本(带有嵌套循环?)

我的函数修复中2个嵌套的循环的时间复杂度如何为o(N)?

您将如何存储变量

如何为创建循环

您将如何为旧版浏览器的Alpha添加对背景颜色的后备支持?

javascript-您将如何为表单中的选择选项编写if(...)语句?

如何创建循环N多的嵌套

我将如何为我的待办事项列表创建一个保存文件?

您将如何创建一个脚本来比较两个系统用户的电子邮件地址

您将如何在 Swift 中扩展嵌套的无约束泛型?

您将如何在Rust中编写与此C ++循环等效的内容

您将如何运行循环以随机化社区矩阵并将其存储?

您将如何在 shell 选择循环中使用管道选项?