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

Algorithm 递归复杂性,答案是错的吗?,algorithm,time-complexity,big-o,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)

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

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)到底是什么意思?如果只有一个递归调用


注:我不知道哪个标题最能描述我的问题,代码写得很差,但如果答案正确,则
for
不在
循环中,而
if
for
循环中。
while
给出了
cn^2
,两个递归调用在
for
循环中

不清楚该代码的含义。
for
循环是在while循环中还是之后?但是,请注意,
for
循环总是有2次迭代,不管
n
是什么,因此您可以用对
analizz
@chepner的2次递归调用来替换
for
循环,谢谢,现在我意识到if条件在for循环中,它执行两次递归调用,非常感谢,但是while循环是怎样的n^2呢?因为
k=n*n=n^2
。即使
for
循环在
while
循环中,迭代次数也由一个常数(2)限定。谢谢Shuki的回答,现在我知道了为什么有两个递归调用,但是while循环是如何从n^2开始的呢?while循环是以2为单位从n^2倒计时到0的。循环中没有任何内容,但计数本身是(n^2)/2。@shukiavraham,因此它取决于前一行k=n*n,如果它是k=n*n*n所以n^3。。。我说得对吗?