如何计算在执行for循环期间发生的操作次数?

5
我是一名有用的助手,可以帮您进行文本翻译。以下是需要翻译的内容:

几天前我参加了一场考试,今天老师给我们发了考试答案。

其中一个问题是

for ( j = 9; j >= 1; j-- )

Count the Number of operations

结果是20。

有人能解释一下他是怎么从那里得到20个操作的吗?


回复很好,但Maya没有付出太多努力。这不是一个作业论坛。 - duffymo
不是的,但我是一个强迫症帮助者 ;-). - Toon Krijthe
@spoon16:在我看来,那是一个最没有帮助的编辑。它使得标题在这个网站上难以阅读、难以搜索,并且通常只是一个糟糕的标题。问题在正文中已经完整重复了。没有必要把它挤进短小的(!)标题中。 - Konrad Rudolph
4个回答

14

20个操作:

set j = 9
check if j(9) >= 1
set j to 8
check if j(8) >= 1
set j to 7
check if j(7) >= 1
set j to 6
check if j(6) >= 1
set j to 5
check if j(5) >= 1
set j to 4
check if j(4) >= 1
set j to 3
check if j(3) >= 1
set j to 2
check if j(2) >= 1
set j to 1
check if j(1)>=1
set j to 0
check if j(0)>=1

对于( j=n ; j>=0 ; j-- ):

首先执行两个操作:

  • (j=n)
  • 检查 (j>=0)。

当n<0时,程序就停止了。

如果 n=0,则多执行了以下两个操作:

  • j--
  • 检查 (j>=0)。

当n=1时,则需要再执行一组以上操作。

因此,总操作次数为2(当n<0)或 2n+4(当n≥0)。

这些操作并不难。你只需要像计算机一样思考,并仔细记录任何状态(变量集)的更改即可。


实际上,这是一个非常好的解释。 :) - BobbyShaftoe
"I am" 的缩写是 "I'm"。 - chaos
Gamecat我应该给n赋一个值然后尝试吗?还是我应该做什么? - maya
不,如果这是一个教育论坛,Maya 应该对语法帮助和编程一样感激。 Maya 下次考试不能把 Gamecat 带进去,所以她最好学会自己做这个。这并不是“刻薄”,只是一个事实。 - duffymo
@duffymo,你是对的。关于“mean”的评论是关于语法的评论。因此有个“;-)”。 - Toon Krijthe
显示剩余5条评论

3

在第一次迭代中,j被设置为9。之后,每次迭代基本上执行相同的两个指令:

  • 首先,测试j >= 1是否成立;
  • 其次,递减jj--)。

这样做九次(从9(含)到0(含))。在最后一个迭代中,我们再次测试j >= 1是否成立,由于不成立,我们退出循环。因此,我们得到1 + 9 * 2 + 1 = 20次迭代。


0

你有1个任务(j=9)。"j--"操作将运行9次;条件检查"j>=1"将运行10次(每次迭代都会问问题"j>=1"),最后一次将失败。所以你有1+9+10=20。

如果你的教练如此刻薄,不提供帮助,那么他非常非常糟糕。这是那种你要么懂得答案,要么不懂得答案的问题。教练应该提供帮助。 :)


在我决定这位教练是否“刻薄”或“不好”的之前,我需要更多的背景信息。 - duffymo
好的,这并不是绝对的判断。如果你使用逻辑,我使用了“条件语句”,也就是说:“如果他那么卑鄙,不愿意提供帮助,则他非常非常糟糕。”这只是基本逻辑101而已。:) 我经常看到像这样的教授,这真是令人恼火。但是,如果原帖作者是错的,那就没有伤害,也没有过失。 :) - BobbyShaftoe

0
你写下了什么值?只是好奇一下。
让我们一起数数吧,玛雅:
for (j = 9; j >= 1; j--)

将9分配给j = 1; 每次循环比较j的当前值与1 = 10; 除了最后一次迭代外,每次迭代都会减少j = 9;

在我的书中,1 + 10 + 9 = 20。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接