while循环的上限和下限

时间:2013-04-21 21:39:15

标签: code-analysis lower-bound

我在上一篇关于嵌入式软件课程的论文中遇到了一个问题。

问题如下:

Let n be the number of iterations of the while loop. Calculate an upper and lower bound on the value of n given that b <= bmax.

x=a
if x<1
then 
  x=1
end if
while x<b
  loop
    x=x+1
  end

我认为上限是:n <= bmax但我不明白如何计算下限。有人可以帮忙吗?

由于

4 个答案:

答案 0 :(得分:3)

对于下限,你得到的是&gt; 1.然后x从a而不是1开始,所以你需要更少的迭代才能从那里到b。

如果你从x = a开始,最后一次迭代发生在x = b(你没有通过测试),那么你需要总共b - 一次迭代。由于b <= bmax,答案是:

lower bound : bmax - a
upper bound : bmax - 1

请注意,如果&gt; = bmax,则下限减少为0,因为迭代次数不能少于0次。

答案 1 :(得分:0)

仅提供所提供的信息,您可以做的最好的是简单的下限 - 0次迭代。这是因为当a>=b时,循环根本不会执行。

至于上限,你有一个错误。由于x的起始值至少为1,因此您最多可以进行bmax-1次迭代,而不是bmax

答案 2 :(得分:0)

我认为问题是:b是某个b&lt; = bmax。现在用bmax和a表示迭代次数n。如果0,则n的下限是微不足道的a >= bmax; n的上限是a < 1的情况,它产生:n = bmax - 1

答案 3 :(得分:0)

upper bound: max(0,b-1) <= max(0,bmax-1)

lower bound: if (a<1) then max(0,b-1), else max(0,b-a)

下限不能用bmax而不是b表示,因为我们有b<=bmax,而不是bmax<=b。如果我们不允许使用b,那么它是0