下面的代码都是在dev编译环境下运行的
普通方法:适用于学循环一部分
题目:求1-20的阶乘之和;
#include<stdio.h>
#define N 20 //这里的宏定义后面可以自行修改(求N个阶乘之和)
int main()
{ int i,j;
long long int sum,t;
for (i=1;i<=N;i++){
long long int t=1;
for (j=1;j<=i;j++){
t*=j;
}
sum=sum+t;
}
printf("阶乘的值是:%lld",sum);
return 0;
}
使用函数:
将求阶乘的东西单独拎出来:
题目:求1-20的阶乘之和:
#include <stdio.h>
#define N 20 //N是说有几个数求阶乘,可以修改;
int main ()
{
long long int add(int a);
int i,j;
long long int sum=0;
for (i=1; i<=N; i++)//
{
sum+=add(i);
}
printf("%lld",sum);
}
//把每个数的阶乘单独拎出来算
long long int add (int a)
{
long long int added=1;
//从a开始a*(a-1)*(a-2)...*1
for (int j=a;j>=1;j--)
{
added*=j;
}
return added;
}
使用递归的方法求阶乘:
题目:求5的阶乘;
#include<stdio.h>
int main ()
{
int rotate (int a); //如果要求的数很大的话要使用long int 类型防止溢出
int a= 1;
printf ("%d",rotate(a+1));
return 0;
}
int rotate (int a)
{
int rotate (int a);
int sum=1; //修改了数据类型之后别忘记与之相关的类型也要一起修改;
a=a-1;
if (a==0)
{
return sum;
}
sum*=a*rotate(a);
}