如何获得循环不变量并证明它适用于以下算法。
power(x,y):
z = 1
m = 0
while m < y:
z = z*x
m = m+1
return z
答案 0 :(得分:0)
首先,我认为你的意思是z = z * x 要显示任何给定循环的循环不变量,您必须提出一个在任何迭代的开始和结束时都不会更改的语句。使用该不变量,您将证明当程序终止时,该函数可以正常工作。 你的功能基本上是试图做x ^ y。
让我们构造一个循环不变量:Z = x ^ m。 您可以看到在循环的开头和结尾都是如此。
你也知道循环只能在没有时退出(m = y,或m = y。
因此,如果Z = x ^ m,并且在终止时m = y。然后Z = x ^ y。
所以我们可以看到这个程序是部分正确的。