Time complexity 有人能帮助理解一个循环关系吗?

Time complexity 有人能帮助理解一个循环关系吗?,time-complexity,recurrence,Time Complexity,Recurrence,我正在学习时间复杂性,并具有以下功能: public static double pow( double x, int n ) { if( n==0 ) return 1.0; return x*pow(x,n-1); } 我的任务是找到它的时间复杂度的递归关系,我知道答案是T(n)=T(n-1)+O(1),我不理解,因为我认为它应该是T(n)=T(n-1)+O(n)。我的推理是,我将每个递归调用乘以发生n次的x,这就是O(n)对吗 *编辑:我想我理解我的错误。T(n)=T(

我正在学习时间复杂性,并具有以下功能:

public static double pow( double x, int n ) {
    if( n==0 ) return 1.0;
    return x*pow(x,n-1); 
}
我的任务是找到它的时间复杂度的递归关系,我知道答案是T(n)=T(n-1)+O(1),我不理解,因为我认为它应该是T(n)=T(n-1)+O(n)。我的推理是,我将每个递归调用乘以发生n次的x,这就是O(n)对吗


*编辑:我想我理解我的错误。T(n)=T(n-1)+O(1)仅用于该特定调用,因此它显然是O(1),解决递归导致n*T(n-1)+(n-1)O(1),因此(n-1)O(1)被忽略,因为它小于n*T(n-1)。所以我们得到了增长的顺序=O(n)。

< P>你不需要考虑每一个乘法。重复关系是关于一个号码的呼叫与另一个号码的相同呼叫之间的关系。在这种情况下,计算
pow(x,n)
需要您已经知道
pow(x,n-1)
-这就是
T(n)=T(n-1)
部分。现在,假设您已经有了
pow(x,n-1)
,那么您还需要做什么来计算
pow(x,n)
?这只是一次乘法-
x*pow(x,n-1)
,它是
O(1)
,所以总的递归关系是
T(n)=T(n-1)+O(1)
。所有其他乘法都已在
T(n-1)