5

数日前に試験を受けましたが、今日、インストラクターが試験の重要な答えを教えてくれました。

質問の1つは

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-- )

では、次の 2 つの操作から始めます。

  • (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ます。その後、各反復は基本的に同じ 2 つの命令を実行します。

  • 最初に、かどうかをテストj >= 1し、
  • 次に、減分j( j--) します。

これは 9 回行われます (9包括的から0包括的まで)。最後の繰り返しで、これが false かどうかを再度テストしj >= 1、これが false であるため、ループを終了します。したがって、1 + 9 * 2 + 1 = 20 回の反復が得られます。

于 2009-02-08T21:13:52.080 に答える
0

どのような値を書き留めましたか? ちょっと興味があるんだけど。

一緒に数えましょう、マヤ:

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

1 つは j = 1 に 9 を割り当てます。ループの反復ごとに j の現在の値を 1 と 1 回比較 = 10。最後のループを除くループの反復ごとに j を 1 減らす = 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 です。

あなたのインストラクターが助けを提供しないほど意地悪である場合、あなたのインストラクターは非常に悪いです. これは、受けるか受けないかの質問の 1 つです。インストラクターが助けるべきです。:)

于 2009-02-08T21:14:57.473 に答える