求整数n(n≥0)阶乘的算法如下,其时间复杂度是()。
int fact(int n){ if (n<=1) return 1; return n*fact(n-1); }
O(log2n)
O(n)
O(nlog2n)
O(n2)
则T(n)=T(n-1)+1=T(n-2)+2=…=T(1)+n-1=O(n),故时间复杂度为O(n)。
时间复杂度是由语句频度分析得来. 递归算法中重复执行的语句主要是调用. 所以递归算法的时间复杂度分析主要是分析递归算法中递归函数调用的次数。
对于本题,咱们给出一个递归的图解过程,如图
从图解可知,该递归过程是线性的。总共递归执行了 n 次,时间复杂度为 O(n)。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
则T(n)=T(n-1)+1=T(n-2)+2=…=T(1)+n-1=O(n),故时间复杂度为O(n)。