folowingコードの時間複雑さを見つける方法を教えてください。どんな助けもありがたい。次のコードの時間の複雑さを見つけるにはどうすればよいですか?
int boo(n) {
if (n > 0)
{
return 1 + boo(n/2) + boo(n/2);
}
else
{
return 0;
}
}
folowingコードの時間複雑さを見つける方法を教えてください。どんな助けもありがたい。次のコードの時間の複雑さを見つけるにはどうすればよいですか?
int boo(n) {
if (n > 0)
{
return 1 + boo(n/2) + boo(n/2);
}
else
{
return 0;
}
}
時にはそれを書き留めて良いです。始めると、1 + boo(n/2)+ boo(n/2)の合計が2行目に表示されます。
そして、そのN/2のそれぞれはまた、
を実行しているなどなどコール数がexponencially成長している間そう終わり、repetionsの数は、唯一logharitmicされます最後はお互いを取り除き、あなたはO(N)を得ます。
PS:それは最後の行をカウントダウンするのに十分である、木全体が持って常にだけ複雑で理論はごくわずかである時間以上のノード(マイナス1)は、(あなたは2つによってmultiplicating定数のケアを、いけない)一度
これはあなたを助けることができますhttp://stackoverflow.com/questions/13467674/determining-complexity-for-recursive-functions-bigo-o-notation –
@DanielCorzoダニエルありがとう、私はすでにそれを見ました。ここの状況は少し異なります。 – Yazgan