对于给定的正整数N,需要你计算 S=1!+2!+3!+…+N!。
输入格式:
输入在一行中给出一个不超过10的正整数N。
输出格式:
在一行中输出S的值。
输入样例:
3
输出样例:
9
这道题也没什么说头,写个函数计算阶乘就可以了。但是有两个小细节:
- 因为阶乘可能会比较大,尽量返回
long long
型,在函数里面定义返回值的时候就要定义清楚 - 最后的结果也应该是
long long
型,注意输出格式
答案
#include<stdio.h>
#include<math.h>
long long factorial( int n ) ;
int main(){
int N ; scanf("%d",&N) ;
long long sum = 0 ;
for( int i = 1 ; i <= N ; i++){
sum = sum + factorial(i) ;
}
printf("%ld",sum) ;
return 0 ;
}
long long factorial( int n )
{
int result = 1 ;//如果输入的是0,则默认结果为1
//这里写的是int,返回也是int,虽然PTA没有判错(估计是因为测试数据太小),但这是错误的写法,下面才是正确的写法
//long long result = 1 ;
for( int i = 1 ; i <= n ; i++){
result = result * i ;
}
return result ;
}