可能的循环不变量

时间:2016-04-13 13:55:56

标签: loops invariants loop-invariant

考虑以下循环:

y=1;
x=a;

//with a>=0 , b>=0

while(x>0){
  y=y*b;
  x=x-1;  
} 

我想结束y = b a

我一直在思考一段时间,似乎无法找出一个足够强大的循环 不变量让我得出结论。有谁知道如何处理这个问题?

非常感谢任何帮助或见解。

1 个答案:

答案 0 :(得分:2)

这里的不变量是y = b a-x

你从x = a开始,所以x-a为零,b 0 = 1,这是y的初始值。

随着循环的进行,每次x减小时y都会乘以b。

在循环结束时x为零,所以y = b a