给出以下递归方法:
/∗∗ Returns the product of integer elements in given array. ∗/
public static int product(int[] arr, int low, int high) {
if (high < low)
return 1;
if (low == high)
return arr[low];
return arr[low] * product(arr, low+1, high-1) * arr[high];
}
我确定了递归方程: T(n)= T(n - 2)+ c
和相应的基本情况公式: T(0)= 1
要制定已关闭的表单解决方案,请执行以下操作:
T(n) = T(n - 2) + c
T(n - 2) = T(n - 4) + c
//Substitute T(n - 2)
T(n) = T(n - 4) + 2.c
T(n) = T(n - 2k) + k.c
//Select k = 1/2.n and substitute
T(n) = T(0) + (1/2n).c
T(n) = 1 + (1/2n).c
1)我的复发等式和基本情况是否正确?为什么?
2)我的封闭式解决方案是否正确?为什么?