0
私には助けが必要な問題があります。与えられたIm:ツリー内のノード数を計算する方法は?
int sum(int[] array, int first, int last)
{
if (first == last)
return array[first];
int mid = (first + last)/2;
return sum(array, first, mid) + sum(array, mid + 1, last);
}
質問:再帰ツリーのノード数を数える数式を決定します。
だから、私は、再帰方程式得た: T(N)= 2T(N/2)+ DN
を、長さ8の配列については、例えば、再帰ツリー内のノードの数は15であろうこれは、ツリー内のノードの数が2n-1(nは配列のサイズ)となることを示します。
私の考えが正しいかどうか、2n-1の式をどのようなケースにも適用できるのだろうか?また、再帰的なアルゴリズムでは、再帰ツリーのノード数を計算する一般的な方法はありますか?
ありがとうございました!
** dn **とは何ですか?そのコードはどのようなコードを表していますか? – trincot
@trincot ** dn **はおそらく、加算演算のコストと関数内の他の一定の時間演算を表します。というのも、** 2T(n/2)**という用語は再帰呼び出しのためであり、残っている操作(比較、** mid **の計算と加算と復帰)はすべて一定の時間を要するからです。 T(n)= 2T(n/2)+ c – Shubham
** dn **には** n **が表示されていることが疑わしい。ちょうどそれが** n **の値に依存していないことを確認したいと思った。 – trincot