2016-11-29 5 views
4

folowingコードの時間複雑さを見つける方法を教えてください。どんな助けもありがたい。次のコードの時間の複雑さを見つけるにはどうすればよいですか?

int boo(n) { 
    if (n > 0) 
    { 
     return 1 + boo(n/2) + boo(n/2); 
    } 
    else 
    { 
     return 0; 
    } 
} 
+0

これはあなたを助けることができますhttp://stackoverflow.com/questions/13467674/determining-complexity-for-recursive-functions-bigo-o-notation –

+0

@DanielCorzoダニエルありがとう、私はすでにそれを見ました。ここの状況は少し異なります。 – Yazgan

答えて

1

enter image description here

時にはそれを書き留めて良いです。始めると、1 + boo(n/2)+ boo(n/2)の合計が2行目に表示されます。

そして、そのN/2のそれぞれはまた、

を実行しているなどなど

コール数がexponencially成長している間そう終わり、repetionsの数は、唯一logharitmicされます最後はお互いを取り除き、あなたはO(N)を得ます。

PS:それは最後の行をカウントダウンするのに十分である、木全体が持って常にだけ複雑で理論はごくわずかである時間以上のノード(マイナス1)は、(あなたは2つによってmultiplicating定数のケアを、いけない)一度

+0

ありがとう、たくさんの仲間(: – Yazgan

+0

)この正確な質問はLOLにありがとうございます。@libik – Yazgan

+0

@Yazgan - うわー、私はそれが正しいと願っています:D ... – libik

関連する問題