process 命令在代码片段中重复了多少次?为什么?

How many times is the process command repeated in the code snippet? Why?

这段代码与特定的语言无关,实际上是关于两个四循环对最终结果的影响。

For(int i=0;i<n-i;i++)
  for(int i=0;i<n-i;i++)
    process;

“process”命令在代码中重复了多少次?
为什么?

让我们假设

  • Forfor
  • 的拼写错误
  • process; 实际上是语句
  • 允许的语法
  • 内部int i创建一个与外部i
  • 不冲突的局部变量
  • 所有内部i引用同一个变量

然后两个循环将迭代直到 2*i <= n,即 n/2 次,对奇数 n 取 1 或取 1。 作为嵌套和独立的(见上面的假设),它将导致 process; 被执行 (n * n) / 4 次。

根据保持所有假设不变,我们可以在小数学版本中概括如下。

Number of times "process" command repeated = ceil(n/2) * ceil(n/2)

这个结果不管是偶数还是奇数。让我稍微解释一下,当我们尝试解决循环条件 i < n - i 中给出的不等式时,它给出 i < n / 2。如果我们用偶数代替 n,那么两个循环都会 运行 n/2 次。对于奇数 (例如 11),如果我们仔细观察内部循环,那么它将 运行 用于从 0 开始的所有整数,包括 5(对于外部循环类似)和总数运行s 是 6 次。另一方面,如果该数字是 10,则根据循环条件和总次数 运行,循环不能有 5 次 运行 s 是 5。现在来到我们的条件 i < n / 2,输入 11 和 10,结果将分别为 5.5 和 5。因此在一般情况下,循环次数 运行 是 ceil(n/2).