最后那个return(n*fact(n-1))这里,是怎么理解的?这难道不是n的值变大了么,成了n(n-1)了?这个时间复杂度不应该n!么?
追答假设计算fact(n)复杂度为T(n),那么同理计算fact(n-1)为T(n-1)。用T(n-1)的时间计算出fact(n-1)后,需要多少时间计算fact(n)呢?O(1)的时间。因为只要n乘以计算出的fact(n-1)的值即可。
所以T(n) = T(n-1) + O(1)。
现在发现是我自己理解错了。return(n*fact(n-1))这一步时间复杂度也应该是O(1),不过需要执行n次。是这样的吗?
追答是的。
追问哦哦。感谢。
本回答被提问者采纳