6

我不确定有什么区别,但这里有问题。

编写一个赋值语句,将名为 numStudents 的计数器变量更新 1。 它会是:

学生人数 = 学生人数 + 1

? 我的另一个问题是

编写一个赋值语句,用 sales 变量中的值更新一个名为 total 的累加器变量。 会不会是一样的:

总计 = 总计 + 销售额

?

4

3 回答 3

7

您的问题没有一个单一、清晰、明确的答案。

可以说,计数器是每次验证给定事件时递增的变量(例如,在迭代数组时,每次遇到数字 5 时,可以将计数器递增 1)。

这个概念可以概括,因为每一步都有计数器增加 2 或 3,或者您想要的任何值;但是,如果步骤并不总是相同,则计数器的语义通常会失去意义。最后,这取决于您的程序的逻辑:如果您要跟踪酒店的单人房和双人房,您的numGuests计数器可能会随着您在给定时刻处理的房间的步长1而增加,2然而,可以争辩说,这最终只是为了清晰或简洁,因为结果与将其增加1, 两次相同!

相反,累加器是一个变量,例如,存储数组元素的总和(即,您没有固定的步长,但增量会根据您遇到的元素而变化)。

该概念可以推广到项目列表,将给定函数f重复应用于累加器的实际值和列表的下一项,将结果保存在我们的累加器中。这样,我们就得到了fold高阶函数的语义(它的另一个名字其实是accumle)。如果我们将分析限制在所谓的左折叠,累加器会在每一刻存储一个中间结果,对您已经处理的子集有效。

total如果您有一个以起始值命名的累加器0和一个包含一年中 12 个月的销售额的数组,则将此定义与+(加法)作为我们的f,将在第n步获得第一个销售额一年中的n个月。

您的示例看起来不错,因为它们严格遵守累加器和计数器的这些定义。

于 2012-10-19T23:05:28.983 回答
5

“计数器”和“累加器”对不同的人有不同的含义。他们对你的教授意味着什么,只有你的教授才能说。

也就是说,通常当有人提到计数器时,他们的意思是“计算有多少东西[符合这些标准]”。

另一方面,通常当人们说你应该积累一些东西时,他们的意思是“将所有这些东西的总价值加起来[符合这些标准]”

这是一个例子。假设您有一组学生,并且这些学生的年龄为:

{16, 17, 16, 19}

计算有多少学生年满 17 岁?答案是 2. 累计 17 岁及以上学生的总年龄?答案是 19+16=35。

于 2012-10-19T22:43:29.033 回答
2

根据我的经验,程序员使用“计数器”来表示一次计数一个,或者偶尔一次计数一个固定间隔的东西。这不一定适用于“累加器”,尽管这并不是说一次计数一个的东西不是累加器。

于 2012-10-19T22:08:13.537 回答