当前位置: 首页 > 面试题库 >

根据n确定函数执行变量计数递增的频率

艾修然
2023-03-14
问题内容

好的,所以我是分析算法的新手,并且非常感谢可以共享的有用提示。我试图确定计数作为n的函数递增的次数。我已经将其运行在一个ide中,对于值1-7,输出为1、3、6、10、15、21、28。我只是不确定如何将其写为n的函数?谢谢。循环如下:

for(int i = 1 ; i <= n ; i++){

    for (int j = 1 ; j <= i ; j++) {

         count++;
    }
}

问题答案:

这种练习的目的是教您如何在纸上进行分析,而不是在机器上运行。但是,让我们看一下模式:

  • 外环将运行总计n
  • 内部循环将在1到2 n倍之间运行,具体取决于i当时的状态。但是您知道平均而言,这将运行(n+1)/2时间。
  • 因此count = n(n+1)/2),这是O(n^2)

见算术级数

更新: 根据要求-为什么内循环是(n+1)/2

外循环将使i在1和n之间递增。因此,在外循环的每次迭代中,内循环将比以前“循环”更多。

因此,内部html" target="_blank">循环将迭代此次数:

  • 1 + 2 + 3 + … + n

因此,我们可以做一些聪明的事情并配对:

  • n与1:(n + 1)= n + 1
  • n-1与2:(n-1)+ 2 = n + 1
  • n-2与3:(n-2)+ 3 = n + 1

由于我们将它们配对,所以我们有n / 2个这样的对:

  • 因此1 + 2 + … + n的总和为((n + 1)*(n / 2))。
  • 因此平均值为((n + 1)*(n / 2))/ n =(n + 1)/ 2

(在长条纸上书写1 + 2 + 3 + … + n时将其可视化,然后将其对折。)

我也强烈建议您阅读有关卡尔·弗里德里希·高斯(Karl Friedrich
Gauss)的著名故事,
以便您永远记住如何对算术级数求和=)



 类似资料:
  • 问题内容: 我感觉这不可能,但是我想确定已传递给javascript函数的变量的原始变量名。我不知道该如何更好地解释它,所以看看这个例子是否有意义。 这是我正在使用的jquery插件,我希望能够显示传递给“调试”函数的变量的名称。 问题答案: 没错,以任何理智的方式这都是不可能的,因为只有值才传递到函数中。

  • 我看到Cloud Functions引用实时数据库的增量计数器,但还没有看到Firebase FiRecovery。 我有一个侦听新文档的云功能: 我正在尝试上述事务,但当我在terminal中运行时,我得到以下错误: error Each then()应该返回一个值或抛出promise/always return函数predeploy error:命令以非零退出代码1终止 这是我第一次尝试任何节

  • 问题内容: 好吧,对于我正在做的事情,我需要增加变量名称,例如,int Taco1 = 23432 ..... int Taco2 = 234235656 ..... int Taco3 = 11111 ....... 但是我需要它是一个像 尝试让我的变量名每次自动递增1,这样它们就不会覆盖自己。如果这不可能,那么我深表歉意。 问题答案: 您不能用Java做到这一点,更重要的是,您不想这样做,因为

  • 问题内容: 我创建了以下脚本,以便从Oracle SQL Developer从Mobile App DB(基于MongoDB)读取数据: 是否可以在TSQL的运行时确定局部变量的类型? 例如,说我想按照以下方式做点事情: 或者 有人知道有什么方法可以做到这一点吗? 编辑:这不是针对特定任务,这更多是一个常识性问题。我确实感谢回答,因为该类型是在同一批中声明的,所以该类型应该是已知的,我很好奇是否可

  • 利用Console API来测量执行时间和计数语句执行。 TL;DR 使用console.time()和console.timeEnd()测量代码两个执行点之间所需的时间。 使用console.count()来计算同一个字符串传递给函数的次数。 测量执行时间 time()方法启动一个新的计时器,对于测量代码执行时间来说是=是非常有用的。将字符串传递给该方法,来给测量标记一个名称。 当您想停止计时器

  • 使用角(5)我显示电子邮件的列表 我的问题是在“名称”属性中。我希望索引“i”作为一个数字传递,尽管它传递i本身(字母)。正确传递索引的方法是什么? 我尝试了这样的东西: 但显然没有成功。 任何帮助都是受欢迎的。