python编程计算1!+2!+...+10!_如何用C语言编程计算 1!+2!+3!+…+10!?

解决这个问题,首先要明白阶乘。

n!=n*(n-1)*(n-2)*……*1;就是自己乘以自己减一,一直乘到一。

循环实现

这个过程必定是一系连续相乘的过程,一直重复着“乘”这个动作,说到这里肯定会要用到循环。

好了,接下来看代码,问题是1到10的阶乘相加,这里一个循环肯定不够用啊,势必要用到循环的嵌套。

外层循环实现的是每一个数的阶乘想加,内层循环的功能是求每一个数的阶乘。

#include

int main()

{

int n;

printf("请输入要求阶乘和的数:\n");

scanf("%d",&n);

int sum=0;

int cheng=1;

int i,j;

for(i=1;i<=n;i++)

{

for(j=1;j<=i;j++)

{

cheng*=j;

}

sum+=cheng;

cheng=1;

}

printf("%d的阶乘是%d",n,sum);

return 0;

}

递归实现

数学里学过数列吧!数列里有一个递推公式。

递推公式就是:已知一个数列的第一项,除了第一项之外的每一项都和前面一张有一定关系,所以我们知道第一项就能推算出每一项了。

我们来递推公式来表示阶乘,我们想求n的阶乘,n!=n*(n-1)!,那么我们就要知道(n-1)的阶乘,就要知道(n-2)的阶乘,即就是:(n-1)!=(n-1)*(n-1-1)!

这样依次此类推会递推到(n-n+1)的阶乘,也就是1的阶乘。

在C语言中递归,就是函数本身调用自己,就是同一个函数调用同一个函数。我们定义一个名叫digui的函数来完成这项工作。

#include

int digui(int n);

int main()

{

int n;

printf("请输入要求阶乘和的数:\n");

scanf("%d",&n);

int i;

int sum=0;

for(i=1;i<=n;i++)

{

sum+=digui(i);

}

printf("%d的阶乘是%d",n,sum);

return 0;

}

int digui(int n)

{

if(n==1)

{

return 1;

}

else if(n>1)

{

return n*digui(n-1);

}

}

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值