题源:PTA
7-16 求1!+2!+……+n!
作者 王跃萍
单位 东北石油大学
求1!+2!+3!+……+n!,n<12,要求用一重循环设计程序。
输入格式:
输入一个小于12的正整数。
输出格式:
在一行中以“m=运算结果”顺序输出,其中运算结果是一个正整数,没有任何列宽控制。
输入样例:
5
输出样例:
m=153
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
//使用递归函数求阶乘
int fac(int n)//定义阶乘函数
{
int f;
if(n==0||n==1)//递归出口
{f=1;}
else
{f=fac(n-1)*n;}
return f;
}
int main()
{
int n;
scanf("%d",&n);
int i,sum=0;
for(i=1;i<=n;i++)//使用循环结构求阶乘之和
{
sum+=fac(i);//也可表述为sum=sum+fac(i);
}
printf("m=%d",sum);
return 0;
}
解题思路:求解阶乘相关问题应第一时间想到函数递归;这里我们定义一个fac函数,设置0和1为递归出口,求阶乘。在主函数中,我们先读入n,然后使用循环结构来求阶乘之和,最后输出得到的结果,同时也应注意题中的输出要求。