CC189

p45计算Big O

int f(int n){
    if(n <= 0){
      return 1;
    }
    return f(n - 1) + f(n -1);
  }
  • 这个是O(2^N)复杂度,O(N)空间

p51

int factorial(int n){
    if(n < 0){
      return -1;
    }else if(n == 0){
      return 1;
    }else{
      return n * factorial(n - 1);
    }
  }
  • 这个是O(N)复杂度,根据T(N) = T(N) + 1推出

p52

  • 这是O(2^N)复杂度,容易理解

  • 下面这个也是O(2^N)的复杂度!

  • 注意不是O(N2^N),实际算出来前面不过是多了个系数 = 2

  • 这题的复杂度是O(N),因为fib(n)只需要抓出fib(n-1) 和fib(n - 2)的结果相加就好,constant time的操作

  • 体现了记忆化搜索的优势

Last updated

Was this helpful?