计算约束下递归函数的时间复杂度

时间:2017-03-20 18:16:46

标签: c++ algorithm time-complexity

下面的函数是一种递归方法,用于在给定约束下查找给定长度的字符串数。任何人都可以解释如何以清晰的方式计算时间复杂度。根据我的理解,在递归树的每一步中,节点的调用都不是2或3.因此上限为3 ^ n,即O(3 ^ n)?.

int countStr(string str, int n, int bCount, int cCount)
{  
    if (str.length() == n)
      return 1;

    int result = 0 ;
      result += countStr(str+'a', n, bCount, 0);

    if (bCount == 0)
      result += countStr(str+'b', n, 1, 0);

    if (cCount < 2)
      result += countStr(str+'c', n, bCount, cCount+1);

    return result ;
}
main()
{    
    int n = 3 ;
    cout << countStr("", n, 0, 0) << endl;
    return 0;
}

0 个答案:

没有答案