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

时间:2009-02-08 21:08:08

标签: algorithm for-loop

我几天前参加了考试,今天教练给了我们考试的关键答案。

其中一个问题是

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

计算操作次数

结果是20。

任何人都可以解释他是如何从中获得20次操作的吗?

4 个答案:

答案 0 :(得分: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,你会得到一个aditional:

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

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

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

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

答案 1 :(得分:3)

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

  • 首先,测试j >= 1
  • 秒,递减jj--)。

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

答案 2 :(得分:0)

你写下了什么价值?好奇。

让我们一起算吧,玛雅:

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

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

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

答案 3 :(得分:0)

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

如果他的教练如此卑鄙以至于不提供帮助,那么你的教练非常非常糟糕。这是你要么得到的问题之一。教练应该提供帮助。 :)