これは私のアルゴリズムのクラスの古い宿題です。私は問題の解決策を持っていますが、試行錯誤を繰り返しても、解決策にたどり着くために正しい方向に考える方法を理解できません。
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
ここで、
1. T(N) は実行時間です
。2. T(N-1)*H(N-1) は、h(N-1) への 1 回の再帰呼び出しに T(N-1) がかかるためです。比較が行われるたびに再計算され、H(N-1) 回と呼ばれます。(ここで、H(N-1) は呼び出しから返された値です)
3. C*H(N-1) は while ループ内のステートメントの実行時間です (while ループは H(N-1) を実行するため)。回。
教授から満足のいく回答が得られませんでした。誰かがこれを理解するのを手伝ってくれれば幸いです.
ありがとうございました!