递归的复杂性,答案是错误的吗?

时间:2019-06-08 17:59:20

标签: algorithm time-complexity big-o

我有以下代码,我想找到复杂性:

analizz(int n) 
    c = 1 
    k = n*n 
    while k > 1 do k = k - 2 
    for i = 0 to 1 do
    if n >1 then analizz(n/2)

以这种方式编写的代码以及我试图理解的问题是,FOR循环位于while循环内,因此开销应为O(n ^ 2),如果n> 1,则进行一次递归调用,所以T(n / 2)。

答案应该是T(n)= 2T(n / 2)+ cn2,我不知道2T(n / 2)到底是多少?如果只有一个递归调用?

ps。我不知道哪个标题最能说明我的问题

1 个答案:

答案 0 :(得分:1)

代码写得不好,但是如果答案正确,则for不在while循环内,而iffor循环内。 while给出了cn^2,并且两个递归调用都在for循环内