注册 登录
编程论坛 新人交流区

一个循环语句的问题,请大家指导

C1014159 发布于 2007-10-25 15:30, 520 次点击

一个循环语句的问题,请大家指导


main()
{
int i,j,n;
long sum=0,num=1;
printf("please input n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
num*=j;
sum+=num;
}
printf("sum=%ld",sum);
}


程序说明:目的求:1!+2!+.......+n!
当n=1,2时程序正确,但当n=3时,sum=15,正确答案应该为9,不知道错误在哪,请大家指导,非常感谢。

17 回复
#2
C10141592007-10-25 15:36
刚刚自己懂了,谢谢
#3
yangdejun2007-10-25 18:14
呵呵,孺子可教夷
#4
neufcl2007-10-25 21:34
回复:(C1014159)一个循环语句的问题,请大家指导
(1)num的值出了问题。修改如下:

#include<stdio.h>
main()
{
int i,j,n;
long sum=0,num=1;
printf("please input n\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
num=1;
for(j=1;j<=i;j++)
num*=j;
sum+=num;
}
printf("sum=%ld\n",sum);
}

(2)但是考虑到时间、空间复杂度问题。还是这样写较好:

#include<stdio.h>
main()
{
int i,j,n;
long sum=0,num=1;
printf("please input n\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
num*=i;
sum+=num;
}
printf("sum=%ld\n",sum);
}

(1)的时间复杂度为大O n的平方。(2)为大O n
空间上也是(2)较好
#5
nuciewth2007-10-25 21:44
num没有重新更新
#6
yjiang20082007-10-25 22:20
neufcl的perfect~
#7
JFan2007-10-25 22:34
值得考虑...
#8
zshkc2007-10-26 00:13

用递归比较简练!

#9
pjjdudu2007-10-26 10:34

在书写循环嵌套时,书写格式最好用缩进式的,这样一目了然哈!
刚学C的时候,老师就这样说的。



#10
yanshana22007-10-26 11:20

我是新人
#11
wanghe_11292007-10-26 11:27
我是新人
#12
neufcl2007-10-27 20:39
以下是引用zshkc在2007-10-26 0:13:17的发言:

用递归比较简练!

编程者还是应该考虑下时间与空间因素吧

#13
colorthewind2007-10-27 22:12

好久没看循环语句了,感觉哪里有问题,但想出全过程还蛮用时间

#14
chuxuezhe172007-10-27 22:44
递归是挺好的,但函数的调用也有些浪费时间吧
而内置函数就好了
可内置函数里不应有循环
#15
苦中求乐2007-10-27 22:58

凑热闹

#16
toyou5422007-10-27 23:01
十分之一!!!
还好看懂了
#17
ahxujin2007-10-28 00:07
学习
#18
wybok5202007-10-28 09:03
hao
1