如何解决查找此函数的循环不变式
我需要找到gcd的循环不变式(欧几里得算法),但我不知道从哪里开始或看上去是什么
int f(int x,int y) {
while (true) {
int m = x % y;
if(m == 0) return y;
x = y;
y = m;
}
}
解决方法
x和y的最大公约数在整个循环中保持相同。因此,循环不变性为gcd(x,y)= c,其中c为常数。
,循环不变性是循环的每次迭代都满足的条件。在您的情况下,您不会在可能发生变化的条件上循环,因此,如果循环不变式不是“循环条件始终为真”,则每次迭代唯一适用的另一件事是“ m的值始终显示x是否可以除以y”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。