我有以下代码,我想找到复杂性:
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。我不知道哪个标题最能说明我的问题
答案 0 :(得分:1)
代码写得不好,但是如果答案正确,则for
不在while
循环内,而if
在for
循环内。 while
给出了cn^2
,并且两个递归调用都在for
循环内