了解嵌套循环将运行多少次

2024-05-23

我试图了解下面的代码中语句“x = x + 1”作为“n”的函数执行了多少次:

for (i=1; i<=n; i++)
  for (j=1; j<=i; j++)
    for (k=1; k<=j; k++)
       x = x + 1 ;

如果我没记错的话,第一个循环就会被执行n次,还有第二次n(n+1)/2次,但在第三次循环时我迷路了。也就是说,我可以数一下它会被执行多少次,但我似乎无法找到公式或用数学术语解释它。

Can you?

顺便说一句,这不是家庭作业或任何东西。我刚刚在一本书上发现并认为这是一个值得探索的有趣概念。


考虑循环for (i=1; i <= n; i++)。看到这个循环很简单n次。我们可以将其绘制为:

* * * * *

现在,当您有两个这样的嵌套循环时,您的内部循环将循环n(n+1)/2次。注意它是如何形成一个三角形的,事实上,这种形式的数字被称为三角数 http://en.wikipedia.org/wiki/Triangular_number.

* * * * *
* * * *
* * *
* *
*

因此,如果我们将其扩展到另一个维度,它将形成一个四面体。由于我无法在此处进行 3D,请想象一下它们中的每一个都层叠在一起。

* * * * *     * * * *     * * *     * *     *
* * * *       * * *       * *       *
* * *         * *         *
* *           *
*

这些被称为四面体数 http://en.wikipedia.org/wiki/Tetrahedral_number,由以下公式产生:

n(n+1)(n+2)
-----------
     6

您应该能够通过一个小测试程序来确认情况确实如此。

如果我们注意到6 = 3!,不难看出这种模式如何推广到更高的维度 http://en.wikipedia.org/wiki/Figurate_number#Triangular_numbers:

n(n+1)(n+2)...(n+r-1)
---------------------
         r!

Here, r是嵌套循环的数量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解嵌套循环将运行多少次 的相关文章

  • 稳定的比较排序,时间复杂度为 O(n * log(n)),空间复杂度为 O(1)

    在经历的同时维基百科的排序算法列表 https secure wikimedia org wikipedia en wiki Sorting algorithm Comparison of algorithms我注意到没有稳定的比较排序 h
  • for 循环的增长顺序复杂

    对于以下代码片段 N 的增长顺序是多少 int sum 0 for int i 1 i lt N i i 2 for int j 1 j lt N j j 2 for int k 1 k lt i k sum 我发现有 lgN 项 但我一直
  • 在 JavaScript 中使用 filter() 查找两个未排序数组的交集的 Big O

    我刚刚开始学习 Big O 表示法 我试图理解不同函数的 Big O 看看哪个更好 我正在努力计算时间和空间复杂度对于以下代码 function findCommonElem arr1 arr2 let result arr1 filter
  • unordered_set::find 的复杂性可以预测吗?

    在寻找适合我正在构建的应用程序的容器时 我浏览了以下文档unordered set 鉴于我的应用程序通常只需要insert and find函数 这个类看起来相当有吸引力 然而 我有点推迟了 因为find是 O 1 摊销 但最坏情况是 O
  • 集合运算的复杂性

    这就是我正在做的 字符串一 某个字符串 字符串二 某个字符串 我想知道字符串中的所有字符one and two它们应该按第一串中的顺序排列 我编写了一个 Java 程序 它通过使用 Collections 对两个集合执行设置操作 我想知道执
  • 时间复杂度单循环与多个顺序循环

    今天 我和我的同事就一个特定的代码片段发生了一场小争论 代码看起来像这样 至少 他想象中是这样的 for int i 0 i lt n i Some operations here for int i 0 i lt m i m is alw
  • 如何将两个已排序数组合并为一个已排序数组? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这是我在采访中被问到的问题 这是我提供的解决方案 public static int merge int a int b int an
  • 该算法的大 O 复杂度是多少?

    我有一个在下面编写的函数 这个函数本质上是一个归并排序 public static long nlgn double nums if nums length gt 1 int elementsInA1 nums length 2 int e
  • 非不相交集并集的最佳算法是什么?

    假设有两个 非不相交 点集 笛卡尔空间 执行这两个集的并集的最佳情况复杂度算法是什么 由于点坐标是任意的 并且它们之间没有特殊关系 因此我不认为这个问题是一个几何特定问题 这是有效地将 S1 和 S2 合并成新集合 S 的通用问题 我知道有
  • Javascript 中内置函数“str.replace()”的时间复杂度或 Big O 表示法是多少?

    我很困惑如果时间复杂度str replace 函数的复杂度为 O n 或 O 1 例如 var str Hello World str str replace Hello Hi console log str gt str Hi World
  • 编辑距离(Levenshtein距离)递归自上而下实现的复杂性

    I have been working all day with a problem which I can t seem to get a handle on The task is to show that a recursive im
  • Big O 用于有限、固定大小的可能值集

    这个问题 https stackoverflow com questions 12305028 java what is the best way to find first duplicate character in a string引
  • for循环内递归函数的时间复杂度

    如果我们有一个函数 int x 0 int fun int n if n 0 return 1 for int i 0 i
  • 最慢的计算复杂度(Big-O)

    在这些算法中 我知道 Alg1 是最快的 因为它是 n 平方的 接下来是 Alg4 因为它是 n 的立方 然后 Alg2 可能是最慢的 因为它是 2 n 这应该具有非常差的性能 然而Alg3和Alg5在我的阅读速度方面还没有遇到过 这两种算
  • 渐近符号的除法运算

    Suppose S n Big Oh f n T n Big Oh f n both f n 相同地属于同一类 我的问题是 为什么S n T n Big Oh 1 是不正确的 考虑S n n 2 and T n n 然后两个S and T
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的
  • 三个嵌套for循环的渐近分析

    我想计算这个嵌套 for 循环的 theta 复杂度 for int i 0 i lt n i for int j 0 j lt i j for int k 0 k lt j k statement 我会说它是 n 3 但我认为这是不正确的
  • Data.Array 有多快?

    The 文档 http haskell org ghc docs latest html libraries array 0 3 0 3 Data Array html of Data Array reads Haskell 提供了可索引数
  • 如何解决素数函数的大O表示法?

    我正在尝试理解 Big O 表示法 很抱歉 如果我问的问题太明显了 但我似乎无法理解这一点 我有以下 C 代码函数 我正在尝试为其计算 Big O 表示法 for i 2 i lt 100 i for j 2 j lt i j j if i
  • 关于大O和大Omega的问题

    我认为这可能是一个关于大 O 表示法的初学者问题 举例来说 我有一个算法 可以递归地分解整个列表 O n 然后将其重新组合在一起 O n 我假设这意味着效率为 O n O n 这是否可以简化为 2O n O 2n 或 O n 根据我对这种表

随机推荐

  • 从 freshdesk api 获取所有用户时获取curl_error(): 2 不是有效的 cURL 句柄资源

    我正在创建自己的系统来管理通过其 API 来自 freshdesk com 的所有票证 我正在发出curl 请求以从freshdesk com 获取数据 通过获取与股票相关的数据 它的工作正常 但是当我通过curl请求请求所有用户时 它会给
  • 使用 Maven 和 Spring REST 配置 Angular 2 项目

    我想将我的小型应用程序从 Angular 1 升级到 Angular 2 我对 Angular 2 和节点配置有点陌生 我的网络应用程序使用 eclipse 和 Maven 问题是我无法使用 Angular 2 进行配置 我应该使用什么目录
  • 对于 1GB 堆,在可视虚拟机中运行计算保留大小需要多长时间?

    我有一个来自 java 进程的 1 GB 堆转储 该进程耗尽了堆空间 我已将堆上传到 java6 发行版附带的 jvisualm 中 我大约 16 小时前开始了 计算保留大小 过程 它仍在运行 计算 1GB 堆上前 20 个对象的保留大小需
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • Java:如何使用自定义 Ant build.xml 将 ProGuard 集成到 Jar 项目中

    我有一个简单的 java 项目 它引用两 2 个库 jar 文件 想要集成 ProGuard 这是我当前的 build xml
  • Visual Studio 调试器 - 自动变量分配

    我正在开发一个多开发人员项目 正在开发的应用程序是通过启动器应用程序启动的 该应用程序传递登录用户 位置等参数 现在 当我调试应用程序时 我在代码上设置了一个断点解析输入参数 并将用户名变量分配给我的用户名等 我可以对这些值进行硬编码 但是
  • 如何使用 YouTube API 访问视频中包含的许可内容

    我想要访问或收集视频中包含的许可内容的 URL 我准备了一张图片 以防无法正确传达我想要的内容 这是我使用的代码的一部分 def youtube videos options youtube build API SERVICE NAME A
  • 这个 HTML 结构有效吗? UL > DIV > { LI, LI } , DIV > { LI, LI } , DIV > { LI, LI }

    这个 HTML 结构有效吗 ul class blog category div class three column li Item 1 li li Item 2 li li Item 3 li div div class three c
  • 提高序列化性能:文本与二进制格式

    如果性能是一个问题 我应该更喜欢二进制序列化而不是 ascii 文本序列化吗 有人用大量数据测试过吗 我使用 boost serialization 来存储表示查找表的矩阵和向量以及 一些内存大小约为 200MByte 的元数据 字符串 I
  • 2D Numpy 数组花式索引 + 掩码

    I have import numpy as np a np array 4 99 2 3 4 99 1 8 7 8 6 8 Why is a True True False False 1 2 等于 array 99 99 And not
  • 获取从开始日期到结束日期的活跃周数

    我的订阅数据如下所示 数据显示用户何时购买订阅 它有user id subscription id start date and end date 我已经得出wk start and wk end从中 user subscription i
  • Tkinter ttk 背景样式的自定义未显示

    在下面的代码中 show widget validity 函数要么应用仅更改小部件现有样式的背景颜色的自定义样式 要么恢复原始样式 这是一个库例程 因此不能完全控制样式 背景颜色似乎已正确重新配置 如每次更改后条目小部件中报告的背景样式描述
  • Rspec:期望与期望与块 - 有什么区别?

    刚刚学习 rspec 语法 我注意到这段代码有效 context given a bad list of players do let bad players it fails to create given a bad player li
  • 构建 C# Web API - REST

    我即将开始一个 C 项目 我从未使用过 C 我希望在犯下愚蠢的错误并走上错误的道路之前能得到一些实施建议 我想要实现的目标基本上是在服务器上拥有一个可以通过 Web API 访问的 C 应用程序 该应用程序将接受一些字符串变量 然后返回一个
  • 如何使用heroku设置环境变量?

    我正在尝试使用此命令行设置环境变量 heroku config set ENV PRODUCTION 但我有这个错误 缺少必需的标志 a app APP 应用程序运行命令 使用 help 查看更多帮助 我的应用程序名称是 disquaire
  • 由 aws API 制作的 HttpRequest 拦截器

    我正在开发一个项目 该项目使用 cognito 作为身份验证服务来保护使用 nodeJS 制作的无服务器休息 API 我已成功关闭未经身份验证的客户端的 API 现在 每当我从 Angular 客户端发出请求时 我都需要在标头中自动注入一个
  • 从表单中选择枚举以设置角色

    Ruby on Rails 4 1 我正在将 Devise 与枚举角色一起使用 目前 它在创建用户时使用默认角色 我想在创建用户的表单中添加一个字段来设置枚举角色 I read this https github com RailsApps
  • 我在没有任何用户操作的情况下显示 javascript 输出时遇到问题

    这就是问题 如果一个整数大于 1 并且只能被 1 和它本身整除 则该整数被称为素数 例如 2 3 5和7是素数 但4 6 8和9不是素数 a 编写一个函数来确定一个数是否为素数 b 在脚本中使用此函数来确定并打印 1 到 10000 之间的
  • Hadoop 推测任务执行

    在Google的MapReduce论文中 他们有一个备份任务 我认为这与Hadoop中的推测任务是一样的 推测任务是如何实现的 当我启动一项推测任务时 该任务是从一开始就作为较旧且缓慢的任务开始 还是从较旧的任务到达的位置开始 如果是这样
  • 了解嵌套循环将运行多少次

    我试图了解下面的代码中语句 x x 1 作为 n 的函数执行了多少次 for i 1 i lt n i for j 1 j lt i j for k 1 k lt j k x x 1 如果我没记错的话 第一个循环就会被执行n次 还有第二次n