一个关于时间复杂度的问题

2024-11-25 05:35:03
推荐回答(2个)
回答1:

这个函数时间复杂度是O(n),也就是楼主所说的线性时间阶
通常~
估算时间复杂度,就是估算一下最里面的语句的执行次数。
这个递归函数,没进一层,算一次乘法,然后n=n-1。已知到n=1为止。
也就是说,乘法算了n-1次,那就是O(n)啦~~

回答2:

不是n!
代码与
for(i=1;i<=n;i++){ans*=i}
等价,所以时间复杂度是N(线性)级别的。
而N!的复杂度可以定义为是阶乘级别的,这种定义每种书都不同
对于最后的代码,时间复杂度就是Sqrt(n)级别。这是一个很抽象的概念,理解就好,没必要较真