C语言,for和while搭配导致无限循环?

我想求1!+2!+3!
#include <stdio.h>
int main ()
{
int n,k,sum=0,m=0;
for (n=1;n<3;n++)
{
k=n;
while (n>1)
{
m=n-1;
k=k*m;
n=n-1;
}
sum=sum+k;
}
printf("%d",sum);
return 0;
}
在for和while那里,不知道为什么导致了无限循环?
该如何改正?

第1个回答  2015-08-06
原因楼上已经说了。
改正方法我觉得可以把while循环的计数用别的变量来计。
例:
#include <stdio.h>
int main ()
{
int n,k,j,sum=0,m=0;
for (n=1;n<=3;n++)
{
k=n;
j=n;
while (j>1) //用j来计数
{
m=j-1;
k=k*m;
j=j-1;
}
sum=sum+k;
}
printf("%d",sum);
return 0;
}本回答被提问者和网友采纳
第2个回答  2015-08-06
由于在while里面,n被减到1才跳出,所以在for里面,n<3永远成立
相似回答