还得请教时间复杂度得问题
例: int sum1(int n)
{
int p=1,s=0;
for(int i=1;i<=n;i++){
p*=i;
s+=p;
}
return s;
}
请讲解一下计算方法,该算法功能是什么啊?
问题点数:0、回复次数:8Top
1 楼jyfcsdn()回复于 2003-10-03 18:02:46 得分 0
时间复杂度就是O(n),就是时间与计算的个数n成线性关系。
主要计算时间就在for循环,一共计算n次。
功能是计算
1 + 1 * 2 + 1 * 2 * 3 + ... + n!
Top
2 楼viscky(冰点思维)回复于 2003-10-05 17:37:46 得分 0
同意,O(n)
如果有多项相加,取幂最大的!Top
3 楼RookieStar(Yukon)回复于 2003-10-06 01:26:45 得分 0
复杂度是O(n),用来求 1! + 2! + …… + n!Top
4 楼chinajiji(菜鸟叽叽)回复于 2003-10-06 01:52:45 得分 0
算法复杂度是:Θ(n)不是O(n);
1 + 1 * 2 + 1 * 2 * 3 + ... + n! = (n+1)!
所以上述算法改成如下:
int sum1(int n)
{
int s = 1;
for(int i=n+1;i>1;i--){
s *= i;
}
return (n > -1 ? s : -1) ;
}
算法复杂度仍为Θ(n),但比原算法快一倍,因为for语句里面少了一个语句.
Top
5 楼kbsoft(让世界充满爱!)回复于 2003-10-06 11:09:33 得分 0
heheTop
6 楼powerpanda(超级熊猫)回复于 2003-10-06 13:17:24 得分 0
chinajiji(菜鸟叽叽)
算法复杂度是:Θ(n)不是O(n);
1 + 1 * 2 + 1 * 2 * 3 + ... + n! = (n+1)!
*****************************************************************
1+2!+3!+4!+...+n! =(n+1)! ?不是的哦。Top
7 楼chinajiji(菜鸟叽叽)回复于 2003-10-06 13:39:27 得分 0
我算错了.Top
8 楼Wolf0403(废人:独活十年~心如刀割)回复于 2003-10-06 16:18:02 得分 0
1*1+1*2+2*3+3*4+...+(n-2)(n-1)Top




