Recursion 嵌套在循环中的接收函数的复杂性

Recursion 嵌套在循环中的接收函数的复杂性,recursion,time-complexity,complexity-theory,Recursion,Time Complexity,Complexity Theory,我试图计算循环内递归调用的复杂性: Calculate(n,m){ for(i=1; i<n; i++){ if(n==1) return 1; Calculate(n-1,m); } for(j=1; i<m; i++){ Calculate(n,m-1); if(m==1) return 1; } } 复杂度=2^m+n???你是正确的:要将m或n减少1,你需要打2个电话;因为您需要将这两个值都减为零,所以需要通过Om+n“级别” 因此,调用

我试图计算循环内递归调用的复杂性:

Calculate(n,m){
for(i=1; i<n; i++){
    if(n==1) return 1;
    Calculate(n-1,m);
 }
for(j=1; i<m; i++){
    Calculate(n,m-1);
    if(m==1) return 1;
} 
}

复杂度=2^m+n???

你是正确的:要将m或n减少1,你需要打2个电话;因为您需要将这两个值都减为零,所以需要通过Om+n“级别”


因此,调用的数量是O2^m+n。

我不确定,但要将m或n减少1,我们需要进行m-1+n-1调用。不是吗?是的,但当我们谈论复杂性时,我们只关心最高阶项。Om+n-2和Om+n是一样的。好的,谢谢,但我还是不明白为什么它是2^??因为每个递归都有2个调用,所以你将有1+2+4+8+…+2^m+n-2个调用,这等于2^m+n-1。循环中有两个调用,每个调用一个,那么它将不仅仅是两个调用
C(m,n) = 1 + C(m-1,n) + C(m-2,n) + .... + C(1,n) 
           + C(m,n-1) + C(m,n-2) + .... + C(m,1)