algorithm - 递归复杂,答案错了?

标签 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.我不知道哪个标题最能描述我的问题

最佳答案

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

关于algorithm - 递归复杂,答案错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508899/

相关文章:

language-agnostic - 两个嵌套循环的复杂性,内部循环步进取决于外部循环变量

ruby - 我可以从这个哈希中得到多少种可能的组合?

algorithm - 在不初始化向量的情况下访问元素。我需要额外的空间吗?

java - 优化 Java 中的递归函数

algorithm - 对有限制的整数进行排序

c - 算法的时间复杂度(嵌套循环)

algorithm - 解释 K-means 的结果

algorithm - 将字符串转换为数字,反之亦然

c - 快速排序和霍尔分区

algorithm - 给定循环的时间复杂度 O(logn) 或 O(n)