我不确定有什么区别,但这里有问题。
编写一个赋值语句,将名为 numStudents 的计数器变量更新 1。 它会是:
学生人数 = 学生人数 + 1
? 我的另一个问题是
编写一个赋值语句,用 sales 变量中的值更新一个名为 total 的累加器变量。 会不会是一样的:
总计 = 总计 + 销售额
?
我不确定有什么区别,但这里有问题。
编写一个赋值语句,将名为 numStudents 的计数器变量更新 1。 它会是:
学生人数 = 学生人数 + 1
? 我的另一个问题是
编写一个赋值语句,用 sales 变量中的值更新一个名为 total 的累加器变量。 会不会是一样的:
总计 = 总计 + 销售额
?
您的问题没有一个单一、清晰、明确的答案。
可以说,计数器是每次验证给定事件时递增的变量(例如,在迭代数组时,每次遇到数字 5 时,可以将计数器递增 1)。
这个概念可以概括,因为每一步都有计数器增加 2 或 3,或者您想要的任何值;但是,如果步骤并不总是相同,则计数器的语义通常会失去意义。最后,这取决于您的程序的逻辑:如果您要跟踪酒店的单人房和双人房,您的numGuests
计数器可能会随着您在给定时刻处理的房间的步长1
而增加,2
然而,可以争辩说,这最终只是为了清晰或简洁,因为结果与将其增加1
, 两次相同!
相反,累加器是一个变量,例如,存储数组元素的总和(即,您没有固定的步长,但增量会根据您遇到的元素而变化)。
该概念可以推广到项目列表,将给定函数f
重复应用于累加器的实际值和列表的下一项,将结果保存在我们的累加器中。这样,我们就得到了fold高阶函数的语义(它的另一个名字其实是accumle)。如果我们将分析限制在所谓的左折叠,累加器会在每一刻存储一个中间结果,对您已经处理的子集有效。
total
如果您有一个以起始值命名的累加器0
和一个包含一年中 12 个月的销售额的数组,则将此定义与+
(加法)作为我们的f
,将在第n步获得第一个销售额一年中的n个月。
您的示例看起来不错,因为它们严格遵守累加器和计数器的这些定义。
“计数器”和“累加器”对不同的人有不同的含义。他们对你的教授意味着什么,只有你的教授才能说。
也就是说,通常当有人提到计数器时,他们的意思是“计算有多少东西[符合这些标准]”。
另一方面,通常当人们说你应该积累一些东西时,他们的意思是“将所有这些东西的总价值加起来[符合这些标准]”
这是一个例子。假设您有一组学生,并且这些学生的年龄为:
{16, 17, 16, 19}
计算有多少学生年满 17 岁?答案是 2. 累计 17 岁及以上学生的总年龄?答案是 19+16=35。
根据我的经验,程序员使用“计数器”来表示一次计数一个,或者偶尔一次计数一个固定间隔的东西。这不一定适用于“累加器”,尽管这并不是说一次计数一个的东西不是累加器。