给定一行代码,计算与执行相对应的步骤数

时间:2017-06-14 07:12:36

标签: python

我有一个代码:

enter image description here

我需要做的是在执行期间计算代码中的步数。

说明如下:

enter image description here

解决方案规定总步数为2 + 3 *(2 + 3 * 3 + 2)+ 2 = 43

据我所知,前两行代码给了我2,因为赋值计为一个时间步。然而,我在带有while循环的部分迷路了。有人可以把它分解给我并解释一下吗?

2 个答案:

答案 0 :(得分:2)

我认为你应该开始分析第二个while循环:

while j < 3:
    total = total + 1
    j = j + 1

每次执行此循环时,都会运行两个分配。所以每个循环需要两个步骤。好吧,让我们看看我们能得到什么:

  1. j = 0 - &gt; 1步比较+ 2步分配
  2. j = 1 - &gt; 1步比较+ 2步分配
  3. j = 2 - &gt; 1步比较+ 2步分配
  4. j = 3 - &gt;仅用于比较的1步(我们不进入循环)
  5. 因此,完成此过程需要3 * 3 + 1 = 10步。现在,让我们来看看更大的while循环:

    while i < 3:
        j = 0
        while j < 3:
           ...
        i = i + 1
    

    和以前一样,这里我们每个有效循环执行10 + 2 + 1 = 13次操作,最后一次比较执行一次操作。所以,最后,整个循环完全需要3 * 13 + 1。最后,返回1步,初始化2步:2 + 3 * 13 + 1 + 1 = 43。

    我希望它能回答你的问题!

答案 1 :(得分:0)

total = 0       #1
i = 0           #1
# 3 times the following <O>
while i < 3     #probably 1
    j = 0       #1
    # 3 times the following <I>
    while j<3   #probably 1
        total = total + 1   #1
        j = j + 1 #1
    # </I>  
    i = i+1 #1
</O>    
return total #1
  • I:3 *(1 + 1 + 1)= 9
  • O:3 *(1 + 1 + 9 + 1)= 36
  • all:1 + 1 + 36 + 1 = 39

这是带有汇编代码的微控制器的典型问题,在我看来它对python或任何其他更高级的语言没用。 这似乎是出于教学原因。

对于我来说,目前还不清楚,为什么内循环应该需要3个循环(而2个分配带有加法),外循环有3 * 3个并且需要4个循环(对于几乎相同的3个语句)

更多的帮助你只能从给你任务的老师那里得到。