给定函数
void function(n)
{
for (int i = n; i > 0; i = floor(i/2))
{
function(floor(i/2));
}
}
我很难找到此类函数的时间复杂度。Chatgpt 说它是log(n)但我相信它必须更大。如何写递推方程或者解决这个问题的正确方法是什么?
给定函数
void function(n)
{
for (int i = n; i > 0; i = floor(i/2))
{
function(floor(i/2));
}
}
我很难找到此类函数的时间复杂度。Chatgpt 说它是log(n)但我相信它必须更大。如何写递推方程或者解决这个问题的正确方法是什么?
那么递推关系显然是
那么这是什么
T(n)
?为了简单起见,我们只关注 2 的幂。然后即
T(n) = 2 * n
。所以总体复杂度似乎是O(n)。