Algorithm 以下递归算法的时间复杂度是多少?

Algorithm 以下递归算法的时间复杂度是多少?,algorithm,time-complexity,master-theorem,Algorithm,Time Complexity,Master Theorem,以下递归算法的复杂度是多少? void rec(n){ 如果(n上述程序的时间复杂度为O(2^k),其中k是递归深度。 这里,2源于这样一个事实,即在每个递归调用中,我们将调用另外两个递归调用。现在,让我们分析递归的最深深度(k) 在上图中,递归路径在每一步中除以2将需要更长的时间才能达到小于1的值(这是基本情况)因此,它将是递归的最深深度。因为,每次我们将n除以2。要达到1以下需要日志步骤。尽管我们也将n除以3。将n除以2将花费更长的时间,因此,它将作为递归的决定因素递归的最深深度。有关详

以下递归算法的复杂度是多少?

void rec(n){

如果(n上述程序的时间复杂度为
O(2^k)
,其中k是递归深度。 这里,
2
源于这样一个事实,即在每个递归调用中,我们将调用另外两个递归调用。现在,让我们分析递归的最深深度(
k

在上图中,递归路径在每一步中除以2将需要更长的时间才能达到小于1的值(这是基本情况)因此,它将是递归的最深深度。因为,每次我们将
n
除以
2
。要达到
1
以下需要日志步骤。尽管我们也将
n
除以
3
。将
n
除以
2
将花费更长的时间,因此,它将作为递归的决定因素递归的最深深度。有关详细信息:

1st
调用中,我们将n减少n/2。
2nd
调用中,我们将n减少n/2 (n/2)/2=n/4=n/2^2。
因此,在
Kth
步骤中,我们减少了n 作者:n/2^k=1.
因此,n=2^k.

在两侧取原木底座2

log2n=log2(2^k)
log2 n=k log2(2)
log2n=k*1[因为log2(2)是1]


因此,在递归的最深处,我们需要
k=log(n)
步骤才能达到n=1,再多一步才能达到n的无穷大?n怎么可能变成负数或零?@StrangerintheQ:如果是整数,很容易(
1/2
在我知道的大多数语言中都会产生零)。如果是浮点,则需要更多的步骤;如果是双精度,则需要更长的时间(例如,
1/1e1000
通常为零)。你遇到麻烦的唯一方法是,如果你用带有弹性整数的有理数作为命名符和分母(如Ruby的
rational
)。
void rec(n){
 if(n<=0)
    return;
 else
    rec(n/3)+rec(n/2); 
}