目录
一、求n的阶乘
1、非递归的方法
2、递归的方法
二、求n的阶乘的和
一、求n的阶乘
,看到这个样式,首先想到用for循环,当然用递归的方法也可以求解,在这里两种方法都介绍。
1、非递归的方法
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1;//初始化为1,不能为0
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret = ret * i;
}
printf("%d\n", ret);
return 0;
}
2、递归的方法
递归的方法就是函数自己调用自己,但是再用递归的时候要注意:(1)不能死递归,是有跳出的条件,每次递归逼近跳出条件;(2)递归的层次不能太深。
以下是每次递归的形式:
代码如下:
#include <stdio.h>
int Fac(int n)
{
if (n <= 1)
{
return 1;
}
else
{
return n*Fac(n-1);
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fac(n);
printf("%d\n", ret);
return 0;
}
二、求n的阶乘的和
上面已经介绍了怎么求n的阶乘,求它的和就需要添加一个sum的变量,用来加和前面n个的阶乘,代码如下:
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1;
scanf("%d", &n);
int sum = 0;
for (i = 1; i <= n; i++)
{
ret *= i;
sum += ret;
}
printf("%d\n", sum);
return 0;
}
感谢点个赞!