今日のクラスで、私の先生はこの再帰的階乗アルゴリズムを黒板に書きました:
int factorial(int n) {
if (n == 1)
return 1;
else
return n * factorial(n-1);
}
彼女は、それには の費用がかかると言いましたT(n-1) + 1
。
それから反復法で彼女は言ったT(n-1) = T(n-2) + 2 = T(n-3) + 3 ... T(n-j) + j
ので、アルゴリズムはいつ停止するn - j = 1
ので、そうj = n - 1
です。
その後、彼女は に代入j
しT(n-j) + j
、 を取得しT(1) + n-1
ました。
彼女は、その n-1 = 2 (log 2 n-1)について直接言ったので、アルゴリズムのコストは指数関数的です。
私は本当に最後の 2 つのステップを失いました。誰か説明してくれませんか?