【问题标题】:How many time is the inner loop running? [closed]内循环运行了多少次? [关闭]
【发布时间】:2021-11-17 00:24:38
【问题描述】:
for(i=1, count=0;i<=n;i=i+k)
   for(j=1;j<=k;j++)
      count++;

我不知道内部 for 循环执行了多少次。 我需要在 n 和 k 方面的答案

【问题讨论】:

  • 那么,您希望外循环执行多少次?而对于外循环的每次迭代,你期望内循环执行多少次?
  • 您是否使用nk 的不同值运行程序并评估count?这应该会给你一个提示。
  • 您可以作弊并将您的代码封装到一个工作程序中,然后显示结果。
  • 这不是count 告诉你的吗?
  • 是的,@Turing85 我确实执行了代码。有一个清晰的模式。但是如果我要手动解决,我如何得到一个直接计算执行次数的数学公式?

标签: loops execution


【解决方案1】:

答案:floor(n/k) * k。要准确检查,我认为您可以使用 print 进行打印。

【讨论】:

    【解决方案2】:

    让我们分别看一下这两个循环。

    外部循环以i=1 开始,在每次迭代中递增k,直到大于n。换句话说,它可以运行n/k 次,或者准确地说是floor(n/k) 次,因为循环不能运行非整数次。

    内部循环相对简单 - 它从j=1 开始,每次迭代将其递增一,直到大于k,总共k 次。

    把这两个放在一起,你会得到floor(n/k)*k

    编辑:
    正如评论中所指出的,如果n&gt;=k,这种分析是正确的。如果n&lt;k 外循环将只运行一次。即,总运行时间为:max(1, floor(n/k))*k

    【讨论】:

    • 而复杂度是O(n)(即使有内循环)。
    • 如果 n=1 并且说 k=2 会怎样?
    • @Jarod42 确实。
    • @Ayazzia01 好收获!请参阅我编辑的答案。
    猜你喜欢
    • 2019-01-18
    • 2021-05-06
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多