次の関数の成長の順序は?特定の再帰関数の成長順序
static int counter = 0;
static void Example(int n)
{
if (n == 1) return;
for (int i = 0; i < n; i++)
{
counter++;
}
Example(n/2);
}
それを解決するために、私は次のことを行っている:
私が最初で終わるために、ループの内部を処分した:私はあったことを分析することにより
static void Example(int n)
{
if (n == 1) return;
counter++;
Example(n/2);
}
その方法の成長の順序はnのlog base 2であることが分かりました。
だから私は最終的な答えが2倍の何か他のログベースになると思っています。どうすればそれを理解できますか?
これは、inner forループを持たない同じメソッドと同じ成長順序を持つことを意味しますか?それは興味深い。助けてくれてありがとう –
@ TonoNam-私はあなたが私の答えを誤解したと思う。 inner forループは実際にコードを指数関数的に遅くします - ループなしではO(log n)、ループではO(n)です。 – templatetypedef
ご清聴ありがとう –