这个循环不变是否保证了变量永远不会改变?
-
16-10-2019 - |
题
假设您有一些循环和整数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,但并非全部。
不隶属于 cs.stackexchange