可能的循环不变量

Possible loop invariant

考虑以下循环:

y=1;
x=a;

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

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

我想得出结论 y = ba

我琢磨了一会儿,似乎想不出一个足够强大的循环 不变量让我得出结论。有谁知道如何解决这个问题?

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

这里的不变量是y = ba-x.

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

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

循环结束时x为零,所以y = ba.