求n!的时间复杂度(只计算一下下面程序的就好)
程序longfun(intn){if(n==0||n==1)return1;elsereturnn*fun(n-1);}...
程序 long fun(int n)
{
if(n==0||n==1)
return 1;
else
return n*fun(n-1);
} 展开
{
if(n==0||n==1)
return 1;
else
return n*fun(n-1);
} 展开
1个回答
展开全部
这时间复杂度就是O(n)。
这只是用来初学递归时用来帮助理解用的。一般使用时,能用循环解决的就不用递归。
只要用一个循环就可以了的。
long fun(int n)
{
long s=1;
for(int i=1; i<n; i++)
s*=i;
return s;
}
这只是用来初学递归时用来帮助理解用的。一般使用时,能用循环解决的就不用递归。
只要用一个循环就可以了的。
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次。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |