以下函数的递归关系

时间:2013-12-01 21:31:37

标签: big-o time-complexity recurrence

我正在尝试确定以下递归函数的递归关系。我想我已经正确地完成了它但想要对我的求解方法进行一些输入..

Solve for C(n) the number of additions that this function does:
  //precondition: n>0
 int fct (const int A[], int n) {
      if (n==1)
         return A[0]*A[0];
      else return A[n-1] * fct(A,n-1) * A[n-1];
 } 

这里,正好发生了两次添加以及n-1的递归调用。 C(1)= 1 C(n)= 2 + C(n-1)// 2因为加法次数加上递归调用C(n-1)

因此

C(2)= C(1)+ 2 = 1 + 3 = 3 C(3)= C(2)+ 2 = 2 + 3 = 5 C(4)= C(3)+ 2 = 7 在C(n)= 2n-1个

哪个大o是O(n)?

1 个答案:

答案 0 :(得分:1)

正确。请记住,递归函数的结构取决于n:

int addRec(int A[], int n) {

添加是其他时间,因此你执行n次常数操作,这会导致你得到的O(n)时间复杂度。