0

次のコード セグメントを検討してください。

    Looping(n) 
      {
       while (true) {
         if (n <= 1) then return;
          else if (n mod 3 = 0) then n = n * 5 + 1;
         else n = n/9; // integer division
      }

このコード セグメントの最悪の場合の時間の複雑さは? `

4

2 に答える 2

1

O(log(n))です。5n+1 を実行するたびに、9 で除算します (n=0 mod 3 の場合、5n+1=1 mod 3 なので)、最悪の場合、2 ステップごとに (5n+1)/9 を実行します。 、2 ステップごとに 2n/3 未満です。これは O(log(n)) です。n mod 3 が 0 にならない場合は、各ステップを 9 で割ります。これは O(log(n)) であり、定数が異なります。

したがって、n が何であれ、1 または 0 に到達するには O(log(n)) ステップを実行する必要があります。

于 2013-09-18T19:45:53.343 に答える