これは私のアルゴリズムクラスの古い宿題です。私はこの問題に対する解決策を持っていますが、繰り返し試みても、正しい方向にどのように考えて解決策に到達するのか理解できません。アルゴリズムの再帰の分析
function h(N) {
if (N==1) return 3;
else {
sum = 1;
i = 0;
while (i < h(N-1))
sum = sum + i;
i = i + 1;
return sum;
}
}
H(N-1)は、whileループで繰り返し呼び出されているので、私によると、whileループは、h(N-1)によって返されるものとして倍のような多くの数を実行する必要があります。それに加えて、whileループの関数呼び出しh(N-1)も何回も起こります。
T(N)= T(N-1)* H(N-1)+ C * H(N-1)+ D
:このように、私によると、私はこのような何かを得る必要がありますh(N-1)への1回の再帰呼び出しがT(N-1)を取るので、T(N-1)* H(N-1) )、比較が行われるたびに再計算されるので、H(N-1)回と呼ばれます。 (N-1)はwhileループ内のステートメントの実行時間です(whileループはH(N- 1)回。
は、私は私の教授から満足のいく答えが得られませんでしたし、誰かが私がこれを理解するのに役立つことができれば私は幸いです。
ありがとうございました!
ありがとう!それは本当に役に立ちました。私は、T(N)= T(N-1)* H(N-1)+ C * H(N-1)+ Dが実際にT C * H(N-1)+ Dは定数であるので、(N)= T(N-1)* H(N-1)+ O(1)明確な説明をありがとう! – Shobit