させて
L3 = 基数 3 への
ログL2 = 基数 2 へのログ
その場合、正解はO(L3(L2(n))であり、O(L2(L2(n))) ではありません。
x = x * 2から始めます。x は n に達するまで指数関数的に増加するため、時間計算量は O(L2(n)) になります。
x = x * xを考えてみましょう。x は上記よりも速く増加します。すべての反復で、x の値は前の値の 2 乗にジャンプします。簡単な計算をすると、次のようになります。
x = 2 n = 4 の場合、反復回数 = 1 n = 16、反復回数 = 2 n = 256、反復回数 = 3 n = 65536、反復回数 = 4
したがって、時間計算量はO(L2(L2(n))です。これは、n の値の上に値を入れることで確認できます。
今あなたの問題に来て、x = x * x * x。これは、x = x * x よりもさらに速く増加します。ここに表があります:
x = 2 n = 8 の場合、反復回数 = 1 n = 512、反復回数 = 2 n = (512*512*512)、反復回数 = 3 など
これを注意深く見ると、これはO(L3(L2(n))であることがわかります。 L2(n) は 2 のべき乗を取得しますが、すべての反復で x の立方体を取得しているため、次のようにする必要があります。実行された正しい反復回数を調べるために、ログを底 3 にします。
したがって、正解はO(log-to-base-3(log-to-base-2(n))だと思います
これを一般化すると、x = x * x * x * x * .. (k times)の場合、時間の計算量はO(log-to-base-k(log-to-base-2(n)