我有一个问题,我需要帮助。我给了:
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公式是否适用于任何情况?另外,在给定递归算法的情况下,是否存在计算递归树中节点数的一般方法?
感谢您的帮助!
答案 0 :(得分:0)
2
/ \
1 1 // 2(n) - 1 = 2(2) - 1 = 3 seems to match!
3
/ \
2 1
/ \
1 1 // 2(n) - 1 = 2(3) - 1 = 5 which seems to match
计算一些其他例子,公式2(n) - 1似乎是正确的。