Algorithm 找到该算法的递推关系?

Algorithm 找到该算法的递推关系?,algorithm,big-o,recurrence,Algorithm,Big O,Recurrence,假设n=B-A+1,我需要推导该算法的递推关系: void recurringalgorithm(int *a, int A, int B){ if (A == B){ for (int j=0;j<B;j++){ cout<<a[j]; } cout<<endl; return; } for (int i=A;i<B;i++){ dosomething(a[A],a[i]); rec

假设n=B-A+1,我需要推导该算法的递推关系:

void recurringalgorithm(int *a, int A, int B){
  if (A == B){
    for (int j=0;j<B;j++){
      cout<<a[j];  
    }
    cout<<endl;
    return;
  }
  for (int i=A;i<B;i++){
    dosomething(a[A],a[i]);
    recurringalgorithm(a,A+1,B);
    dosomething(a[A],a[i]);
  }
}
void递归算法(int*a,int a,int B){
如果(A==B){

对于(int j=0;j假设递归算法的复杂性为
h(A,B)

从代码中,您可以将
h
分为两种情况:

h(A,B) = { complexity-of-if-branch          if A = B
         { complexity-of-rest-of-the-code   otherwise
“if分支的复杂性”是微不足道的。对于“代码其余部分的复杂性”,因为它涉及到
recurringalgorithm
,所以需要再次包含
h

例如,如果函数的定义如下

function hh(A,B) {
    for (var i = A+1; i < B; ++ i)
        hh(i, B);
}
您可以将其与代码进行比较以进行概括


(顺便说一句,复杂度是
h(A,B)=O(B*(B-A)!

假设递归算法的复杂度是
h(A,B)

从代码中,您可以将
h
分为两种情况:

h(A,B) = { complexity-of-if-branch          if A = B
         { complexity-of-rest-of-the-code   otherwise
“if分支的复杂性”是微不足道的。对于“代码其余部分的复杂性”,因为它涉及到
recurringalgorithm
,所以需要再次包含
h

例如,如果函数的定义如下

function hh(A,B) {
    for (var i = A+1; i < B; ++ i)
        hh(i, B);
}
您可以将其与代码进行比较以进行概括


(顺便说一句,复杂性是
h(A,B)=O(B*(B-A)!)

这是家庭作业还是面试问题?你确定是
(A,A+1,B)
不涉及
i
?这是一个家庭作业问题,是的,它是a+1,而不是a+i。看起来
n
应该是
B-a+1
而不是
a-B+1
,因为从算法上看,
a
B
分别用作开始和结束。哎哟,你是对的。我错了。这是B-a+1。Post已经过了这是家庭作业还是面试问题?你确定这是
(a,a+1,B)
不涉及
i
?这是一个家庭作业问题,是的,它是a+1,而不是a+i。看起来
n
应该是
B-a+1
而不是
a-B+1
,因为从算法上看,
a
B
分别用作开始和结束。哎哟,你是对的。我错了。这是B-a+1。Post已经过了因此,在计算总体大o复杂度时,if分支的复杂度可以忽略不计?@zebraman:不,“if分支的复杂度”是由
o(B*(B-A)!)
中的“B”因子决定的。每当我看到“A”!”在复杂度中,我哭了……幸好这只是作业!谢谢,所以在计算整体大o复杂度时,if分支的复杂度可以忽略不计?@zebraman:不,“if分支的复杂度”是
o(B*(B-a)!)
中的“B”因子的责任。每当我在复杂度中看到“a!”,我哭了……幸好这只是作业!