loops - 可能的循环不变式

标签 loops invariants 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

关于loops - 可能的循环不变式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36600660/

相关文章:

c - 跳出 'for' 循环

c++ - shared_ptr 不能为空?

python - 在循环内递增 for 循环

perl - 我们可以在 Perl 中同时运行两个非嵌套循环吗?

android - 如何使用 Lua 和 Corona Labs SDK 中的循环使对象逐渐在我的屏幕上移动

prolog - 从某些序言列表中删除不变量?

Java循环不变量

arrays - (Dafny) 将一个数组的元素添加到另一个 - 循环不变式

c - 循环不变证明理解