求教C语言:求S=1!+2!+3!+…+n!,n从键盘输入??

2024-11-27 00:22:42
推荐回答(5个)
回答1:

用递归比较容易出错,你把这些程序都自己调试一下,选择一个你能理解和能够运行正确的吧!
#include
"stdio.h"
main()
{
float
f(int);
int
i,n;
float
sum=0;
printf("input
the
integer
n(n>0):\n");
scanf("%d",&n);
/*从键盘输入n*/
for(i=1;i<=n;i++)
sum=sum+f(i);
printf("%f\n",sum);
}
float
f(n)
{
int
i;
float
result=1;
for(i=1;i<=n;i++)
result=result*i;
return(result);
}

回答2:

#include
void main()
{ float f(int);
int i,n;
float sum=0;
printf("input the integer n(n>0):\n");
scanf("%d",&n); /*从键盘输入n*/
for(i=1;i<=n;i++){
sum=sum+f(i);
}
printf("%e\n",sum);
}
float f(int n)
{ float result;
if(n==1||n==0) result=1;
else
result=result*f(n-1);
return(result);
}

回答3:

用递归比较容易出错,你把这些程序都自己调试一下,选择一个你能理解和能够运行正确的吧!

#include "stdio.h"
main()
{
float f(int);
int i,n;
float sum=0;
printf("input the integer n(n>0):\n");
scanf("%d",&n); /*从键盘输入n*/
for(i=1;i<=n;i++)
sum=sum+f(i);
printf("%f\n",sum);
}
float f(n)
{
int i;
float result=1;
for(i=1;i<=n;i++)
result=result*i;
return(result);
}

回答4:

还是不要用递归了,递归不太好!

回答5:

#include

long jc(int a); /*计算阶乘的函数*/

int main()
{
int n; /*用户输入的值*/

printf(“Enter a number:/n”); /*提示用户输入*/
scanf(“%d”, &n);

/*调用函数并输出返回值*/
printf(“1!+2!+3!...n!=%ld/n”, jc(n));

return 0; /*表示main函数成功结束*/

} /*main函数结束*/

/*计算阶乘的函数*/
long jc(int a)
{
int sum;

for(i = a;i >= 1; i --){
if(i-1 = 0){
i -1 = 1;
}/*排除求1!时出现1*0的情况*/

sum += i * jc(i -1);/*将各数的阶乘累加起来*/

} /*结束for*/

return sum; /*将结果返回给main*/
}