5

前几天我有考试,今天老师给了我们考试的关键答案。

其中一个问题是

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

计算操作次数

结果是20。

谁能解释他如何从中获得 20 次手术?

4

4 回答 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

for( j=n ; j>=0 ; j-- )

好的,您从两个操作开始:

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

对于所有 n<0,它会停在那里。

如果 n=0,你会得到一个附加值:

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

对于 n=1,你会得到另一组。

因此,对于 n<0,操作数为 2,对于 n>=0,操作数为 2n+4。

这些事情并不难。您只需要像计算机一样思考并仔细注意状态(变量集)的任何变化。

于 2009-02-08T21:15:14.633 回答
3

好吧,在第一次迭代中,j设置为9. 之后,每次迭代基本上都执行相同的两条指令:

  • 首先,测试是否j >= 1
  • 第二,递减jj--)。

这做了九次(从9包含到0包含)。在最后一次迭代中,我们再次测试是否j >= 1并且由于这是错误的,我们退出循环。因此,我们得到 1 + 9 * 2 + 1 = 20 次迭代。

于 2009-02-08T21:13:52.080 回答
0

你写了什么值?只是好奇。

让我们一起数一数,玛雅:

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

一个用于将 9 分配给 j = 1;对于循环的每次迭代,将 j 的当前值与 1 进行一次比较 = 10;每次循环迭代 j 减一,除了最后一个 = 9;

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

于 2009-02-08T21:13:54.280 回答
0

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

如果您的教练如此卑鄙以至于不提供帮助,那他就非常非常糟糕。这是您得到或没有得到的问题之一。导师应该帮忙。:)

于 2009-02-08T21:14:57.473 回答