我有以下代码,我想求其复杂度:
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.我不知道哪个标题最能描述我的问题
最佳答案
代码写得不好,但如果答案正确,for
不在 while
循环内,而 if
在里面for
循环。 while
给出了 cn^2
并且两个递归调用在 for
循环中
关于algorithm - 递归复杂,答案错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508899/