前几天我有考试,今天老师给了我们考试的关键答案。
其中一个问题是
for ( j = 9; j >= 1; j-- )
计算操作次数
结果是20。
谁能解释他如何从中获得 20 次手术?
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-- )
好的,您从两个操作开始:
对于所有 n<0,它会停在那里。
如果 n=0,你会得到一个附加值:
对于 n=1,你会得到另一组。
因此,对于 n<0,操作数为 2,对于 n>=0,操作数为 2n+4。
这些事情并不难。您只需要像计算机一样思考并仔细注意状态(变量集)的任何变化。
好吧,在第一次迭代中,j
设置为9
. 之后,每次迭代基本上都执行相同的两条指令:
j >= 1
和j
(j--
)。这做了九次(从9
包含到0
包含)。在最后一次迭代中,我们再次测试是否j >= 1
并且由于这是错误的,我们退出循环。因此,我们得到 1 + 9 * 2 + 1 = 20 次迭代。
你写了什么值?只是好奇。
让我们一起数一数,玛雅:
for (j = 9; j >= 1; j--)
一个用于将 9 分配给 j = 1;对于循环的每次迭代,将 j 的当前值与 1 进行一次比较 = 10;每次循环迭代 j 减一,除了最后一个 = 9;
1 + 10 + 9 = 20 在我的书中。
您有 1 个作业 (j=9)。"j--" 操作将运行 9 次;条件检查 "j>=1" 将运行 10 次(每次迭代你问问题 "is j>=1"),最后一次将失败。所以你有 1 + 9 + 10 = 20。
如果您的教练如此卑鄙以至于不提供帮助,那他就非常非常糟糕。这是您得到或没有得到的问题之一。导师应该帮忙。:)