分析下程序,阶乘可以用递归做,也可以用循环做,这里就放上这两种代码了。
一.递归:
#include
int f(int t)
{
if (t==1)
return 1;
else
return t*f(t-1);
}
int main()
{
printf("%d\n",f(10));
return 0;
}
程序分析:定义一个f函数,利用递归的特性,进行运算
10*f(9) = 10*9*f(8) …… 直到到1时返回1
得出结果:
二.循环:
#include
int main()
{
int t1=1;
for(int i=10;i>=1;i--)
{
t1 = t1*i;
}
printf("%d", t1);
return 0;
}
程序分析:直接用一个for循环进行自减即可完成,定义t1用于存储结果
得出结果:
#include "stdio.h"
int main(int argv,char *argc[]){
int i,s,t;
for(s=0,t=i=1;i<=10;s+=t*=i++);
printf("1!+2!+3!+...+10! = %d\n",s);
return 0;
}
结果:
#include
int main()
{
int i,n,s=0,t=1;
printf("%s\n","请输入要阶乘求和的数");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=t*i;
s=s+t;
}
printf("%d的阶乘求和结果是%d\n",n,s);
return 0;
}
在输入界面输入10,按enter,得结果4037913
计算从1到10各数阶乘的和,即1! + 2! + 3! + …… + 9! + 10! 的和
#include
int main(void)
{
int sum,i,term;
sum=0;
term=1;
for(i=1;i<=10;i++)
{
term=term*i;
sum=sum+term;
printf("%d的阶乘 %d\n",i,term);
}
printf("1到10各数阶乘的和 %d\n",sum);
return 0;
}
#include
int main()
{
using namespace std;
int n,factorial;
int Sum=0;
cout<<"请输入要求得整数:";
cin>>n;
for(int i=1;i<=n;i++)
{
factorial=1;
for(int j=1;j<=i;j++)
{
factorial=factorial*j;
}
Sum=Sum+factorial;
}
cout<<"结果是:"<
getchar;
return 0;
}