我正在尝试确定以下递归函数的递归关系。我想我已经正确地完成了它但想要对我的求解方法进行一些输入..
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)?
答案 0 :(得分:1)
正确。请记住,递归函数的结构取决于n:
int addRec(int A[], int n) {
添加是其他时间,因此你执行n次常数操作,这会导致你得到的O(n)时间复杂度。