C语言求阶乘和怎么是错的,高手指教!

来源:百度知道 编辑:UC知道 时间:2024/06/18 15:22:15
#include <stdio.h>
#include <conio.h>
int fun(int x)

{
int s=1;
int sum=0;
int i,j;
for(i=1;i<=x;i++)
{
for(j=1;j<=i;j++)
s*=j;
sum+=s;
}
return sum;
}

void main()
{
printf("%d",fun(3));
printf("\n");getch();

}

#include <stdio.h>
#include <conio.h>
int fun(int x)

{
int s=1;
int sum=0;
int i,j;
for(i=1;i<=x;i++)
{
s=1;
for(j=1;j<=i;j++)
s*=j;
sum+=s;
}
return sum;
}

void main()
{
printf("%d",fun(3));
printf("\n");getch();

}
每次循环结束的时候 s!=1,无法准确计算下一循环,for(i=1;i<=x;i++)循环从s=1开始执行,就可以避免问题了

求阶乘你怎么不用递归……?
int func(int x)
{
if(x ==1)
return 1;
return x*func(x-1);
}//一般求阶乘都是用递归,简单一些

for(j=1;j<=i;j++)
s*=j;
sum+=s;
后面加一句:
s=1;

{
for(j=1;j<=i;j++)
{s*=j;\\这里加多一对花括号
sum+=s;
}
}

#include <stdio.h>
#include <conio.h>
int fun(int x)
{
int s=1;
int sum=0;
int i,j;
for(i=1;i<=x;i++)
{
for(j=1,s=1;j<=i;j++)
s*=j;
sum+=s;}