2017-06-14 10 views
0

私は、次のようなコードを持っています実行中。コードの行を考えると、実行に対応したステップ数をカウント

命令がどこようである:

enter image description here

溶液は、ステップの総数は2 + 3 *(2 + 3 * 3 + 2)であることを条件+ 2 = 43

私は、コードの最初の2行は1つのタイムステップとしての割り当てカウント以来私に2を与えることを理解します。しかし、私はwhileループの部分で迷っています。誰かが私にそれを分けて、少し説明できますか?

+0

ご不明な点がありません。実際に何をしたいですか? – Ravi

+2

グラフィックを実際のコードに置き換えることをお勧めします。 – guidot

答えて

2

私はあなたがループしながら、第二の分析され始めるべきだと思う:

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

あなたはこのループを実行するたびに、あなたは2 assignementsを実行します。したがって、各ループには2つのステップがあります。さて、我々が得ることができるか見てみましょう:assignements

  • jに対して+ 2ステップの比較のために> 1つのステップ -

    1. J = 0 - assignements
    2. J = 1 + 2ステップの比較のために> 1つのステップ= 2 - assignements
    3. J = 3 + 2ステップの比較のために> 1つのステップ - だけの比較のために> 1つのステップ(私たちはループを入力しない)

    だから、それは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.

    あなたの質問に答えることを願っています!

  • +0

    ああ完璧。本当にありがとう。今、私は分かる。 – Maxxx

    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
    • 全:1 + 1 + 36 +1 = 39

    これは、アセンブラコードを持つマイクロコントローラの一般的なキューイングです。私の意見では、これはPythonやその他の上位言語では役に立ちません。 教訓の理由のようです。私にとって

    内側のループは、(ほかにしばらく及び2つの割り当て)3サイクルを取る必要があり、外側のループは論文3 * 3を持っており、(ほぼ同じ3文のための)4以上を要し、なぜそれは、不明である

    より多くの助けを借りるのは、あなたに任務を与えた先生からだけです。

    関連する問題