如何找到循环不变java

如何找到循环不变java,java,invariants,loop-invariant,Java,Invariants,Loop Invariant,我试图在下面的代码中找到循环的不变量 一般来说,我真的不知道如何找到不变量。 有人能帮我找到一个不变量吗?还有人能帮我找到下面代码中的不变量吗? 谢谢 循环不变量是对循环的每次迭代都成立的条件 在您的情况下,一个不变量是: q>=0循环不变量是对循环的每次迭代都适用的条件 在您的情况下,一个不变量是: q>=0循环不变量是对循环的每次迭代都适用的条件 在循环中,谓词q>=0是一个循环不变量,因为它总是真的。分析循环不变量的需要是,当您退出循环时,可以保证循环不变量和循环终止条件。因此,在您退出循

我试图在下面的代码中找到循环的不变量 一般来说,我真的不知道如何找到不变量。 有人能帮我找到一个不变量吗?还有人能帮我找到下面代码中的不变量吗? 谢谢


循环不变量是对循环的每次迭代都成立的条件

在您的情况下,一个不变量是:


q>=0

循环不变量是对循环的每次迭代都适用的条件

在您的情况下,一个不变量是:


q>=0

循环不变量是对循环的每次迭代都适用的条件


在循环中,谓词q>=0是一个循环不变量,因为它总是真的。分析循环不变量的需要是,当您退出循环时,可以保证循环不变量和循环终止条件。因此,在您退出循环的情况下,我们可以确保q>=0和a 循环不变量是对循环的每次迭代都适用的条件


在循环中,谓词q>=0是一个循环不变量,因为它总是真的。分析循环不变量的需要是,当您退出循环时,可以保证循环不变量和循环终止条件。因此,在您退出循环的情况下,我们可以确保q>=0和a 关于循环不变量,首先要注意的是有很多循环不变量。其中有些更有用,而有些则不太有用。由于不变量用于证明程序的正确性,所以选择不变量取决于您试图证明什么

例如,q>=0是循环的不变量。如果你想证明函数返回一个正数,这就是你所需要的。如果你想证明更复杂的东西,你需要一个不同的不变量

由于Java中的参数是按值传递的,并且由于程序修改了参数a的值,所以让我们使用a0来表示参数的初始值。现在可以编写以下不变表达式:

a == a0 - (b * q)
通过观察,每次q增加,a也减少了b,得出了这个不变量。因此,在循环的每次迭代中,a0减少b正好是q次


这个不变量可以用来证明循环产生q==a0/b,并且a的结束值等于a0%b。

关于循环不变量,首先要注意的是有很多不变量。其中有些更有用,而有些则不太有用。由于不变量用于证明程序的正确性,所以选择不变量取决于您试图证明什么

例如,q>=0是循环的不变量。如果你想证明函数返回一个正数,这就是你所需要的。如果你想证明更复杂的东西,你需要一个不同的不变量

由于Java中的参数是按值传递的,并且由于程序修改了参数a的值,所以让我们使用a0来表示参数的初始值。现在可以编写以下不变表达式:

a == a0 - (b * q)
通过观察,每次q增加,a也减少了b,得出了这个不变量。因此,在循环的每次迭代中,a0减少b正好是q次


这个不变量可以用来证明循环产生q==a0/b,并且a的结束值等于a0%b。

?搜索这个网站,有很多关于什么是循环不变量的解释。举个例子:这可能对你有帮助,对我也有帮助。作业搜索这个网站,有很多关于什么是循环不变量的解释。举个例子:这可能对你有帮助,对我也有帮助。非常感谢,我现在很清楚了。带a0的表达式正是我想要的。我不明白的是,为什么我们要用a而不是b来编写一个函数,例如。@navidkoochoolo有很多方法可以通过将表达式的一部分移动到==的不同侧面来编写相同的不变量。例如,你可以把它写成b*q==a0-a,但这是同一个精确表达式。要提取表达式有点困难,不看你的表达式,我想了很多,但无法得到这样的表达式,也不知道我应该使用a0例如:/无论如何,谢谢:你解释的东西真的很有用谢谢,我现在很清楚了。带a0的表达式正是我想要的。我不明白的是,为什么我们要用a而不是b来编写一个函数,例如。@navidkoochoolo有很多方法可以通过将表达式的一部分移动到==的不同侧面来编写相同的不变量。例如,你可以把它写成b*q==a0-a,但这是同一个精确的表达式。要提取表达式有点困难,不看你的表达式,我想了很多,但达不到这样的表达式,也不知道我应该使用a0例如:/无论如何,谢谢:这对你的经验非常有用 躺