求n!的时间复杂度(只计算一下下面程序的就好)

程序 long fun(int n)
{
if(n==0||n==1)
return 1;
else
return n*fun(n-1);
}

时间复杂度就是O(n)。
这只是用来初学递归时用来帮助理解用的。一般使用时,能用循环解决的就不用递归。
只要用一个循环就可以了的。
long fun(int n)
{
long s=1;
for(int i=1; i<n; i++)
s*=i;
return s;
}追问

那是老师的作业,就是算上面那个程序的时间复杂度,O(n)是多少算出一个数来,例如O(1),O(n)O(n!)等,需要计算过程啊,不能换程序啊,老师就是让我们算一下每个语句的运行次数啊

追答

楼主所贴程序的时间复杂度就是O(n)的啊。这明白无误。
主程序中调用fun(n)时,总共调用fun函数n次。

温馨提示:答案为网友推荐,仅供参考
相似回答