假设您有一些循环和整数K:

int k = 5;
for (int i = 0 ; i < N; i++)
{
  //(*)
  //do something 
}

(*)的循环不变为:$ {k = k } $

这是否可以保证$ k $在迭代之间不会改变?如果没有,还有其他保证吗?

有帮助吗?

解决方案

循环不变并不能“保证”任何东西。这是有关该计划时的相关信息的摘要。如果您的循环是:例如:

k = 5;
...
for(int i = 0; i < N; i++) {
   /* Invariant: k = 5 */
   ...
   k = 207;
   ...
   frob_very_hard(&k);
   ...
   k *= 3;
   ...
   k = 5;
}

在标记的点k == 5,但并非全部。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top