gpt4 book ai didi

c++ - 了解循环不变量

转载 作者:行者123 更新时间:2023-11-28 07:56:21 24 4
gpt4 key购买 nike

我认识的一位正在上计算机科学入门类(class)的大学新生请我帮忙完成他的一项家庭作业。我通读了几遍,很尴尬地承认我不知道他们在问什么。这是问题:

下面给出了一个循环的轮廓。完成程序,以便它读取 x 和 y 值,验证它们(通过继续提示用户直到他们输入正确的值),然后运行,这样给定的断言将始终为真。在程序中必须为真的四个点包括循环不变断言。除了在给定的 assert(...) 语句中,您不能使用乘法运算符。

assert(x>0 && y>0);
while(...)
{
assert(sum == i*(x+1));
...
...
}
assert(sum == y*(x+1));

我不知道循环不变量是什么,所以我用谷歌搜索并阅读了 Wikipedia article .从那里我收集到第一个 assert 语句告诉我在循环期间我不应该允许 x 和 y 为负数。说实话,我被困在这一点上。有人可以帮助我了解他们在这里的要求吗?

最佳答案

作业描述不完整,几乎没有意义。

但是,可以推断它是让用户输入两个正整数,并在不使用乘法运算符的情况下计算乘积,作为和。

一般来说,正整数的乘积可以这样定义为和:

2 times b = b + b
(a + 1) times b = b + (a times b)

通过要求一般规则成立来推断操作数 1 和 0 的情况。

最后一个等式与您所展示的断言的相似性可能并非巧合。

无论如何,它作为循环不变量工作得很好。当你增加循环变量时,循环不变量仍然存在并确保你有一个很好的产品。因此,当循环结束时,循环不变量对该乘积的约束,加上此时循环变量的值,确保您的乘积(很容易简化为)x*y。

关于c++ - 了解循环不变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12633384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com