我在上一篇关于嵌入式软件课程的论文中遇到了一个问题。
问题如下:
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但我不明白如何计算下限。有人可以帮忙吗?
由于
答案 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
。