测量递归函数的代码复杂性

时间:2015-04-02 23:18:43

标签: code-complexity

据我的教授说,这段代码是Teta(n ^ n)

逐行测量我无法发现自己​​的复杂性

这是代码

any(v[], n, degree){
   for(i=0; i<degree; i++){
      any(v,n-1,degree)
   }
}

我一直在做自己。

any(v[], n, degree){
   for(i=0 - C; i<degree c(n+1); i++ cn){ 
      any(v,n-1,degree) n(T(n-1))
   }
}

2c+2cn+n(T(n-1))

2 个答案:

答案 0 :(得分:1)

你的教授是对的,那个代码会以递归的方式运行,并且会越来越负面。如果那不是你想要的,那么你必须实现一个条件来结束递归,即n的值:

any(v[], n, degree){
   if (n > -1) {
       for(i=0;i< degree;i++){
          any(v,n-1,degree)
       }
   }
}

答案 1 :(得分:1)

首先,看起来这实际上是无限的,因为它不会在n == 0处中断或返回。假设算法确实在n == 0处返回(它必须在当前缺失的if语句中):

T(n)=度* T(n-1),其中T(0)= 1且T(1)=度

这减少到O(度^ n)

我不确定n ^ n来自哪里。除非我的数学错误。

相关问题