Math 递推法递推方程的确定

Math 递推法递推方程的确定,math,recursion,big-o,recurrence,Math,Recursion,Big O,Recurrence,给定以下递归方法: /∗∗ 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, lo

给定以下递归方法:

/∗∗ 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];
}
1) 我的递推方程和基本情况正确吗?为什么


2) 我的封闭式解决方案正确吗?原因是什么?

请注意,在某些情况下执行
返回1
,而在其他情况下则不正确。显然,偶数和奇数
n
应该有不同的情况,或者涉及某种“从圆到偶数”的运算符。@Goblinalchemation你知道这种方法的大O符号(时间复杂度)是什么吗?当
n
无限增长时,你可以忽略
1
1/2和
c
是常数乘数。因此,渐近时间复杂度为
O(n)
。请注意,在某些情况下执行
返回1
,而在其他情况下不执行。显然,偶数和奇数
n
应该有不同的情况,或者涉及某种“从圆到偶数”的运算符。@Goblinalchemation你知道这种方法的大O符号(时间复杂度)是什么吗?当
n
无限增长时,你可以忽略
1
1/2和
c
是常数乘数。因此,渐近时间复杂度为
O(n)
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