我目前在我的家庭作业中陷入循环不变证明。我需要证明其正确性的算法是:
Multiply(a,b)
x=a
y=0
WHILE x>=b DO
x=x-b
y=y+1
IF x=0 THEN
RETURN(y)
ELSE
RETURN(-1)
我试着看几个循环不变量的例子,我对它应该如何工作有了一些了解。然而,在上面的这个算法中,我有两个退出条件,我对如何在循环不变证明中处理这个问题有点迷茫。特别是我正在努力解决的终止部分,围绕 IF 和 ELSE 语句。
到目前为止,我所构建的只是查看算法的终止,在这种情况下,如果x = 0
它返回y
包含n
(while 循环中的迭代次数) 的值的值,其中 if x
is not 0
,x < b
然后它返回-1
。我只是有一种感觉,我需要以某种方式证明这一点。
我希望有人可以为我提供一些帮助,因为我在这里找到的类似案例还不够。
非常感谢您抽出宝贵的时间。