内容纲要
输入一个正整数,输出它的阶乘
思考:
一、其实这个也就是从1开始遍历到这个数,再赋值一个 =
(这种程序其实也没找到有优化的点,不过需要注意的是b初始化的时候记得赋值1)
二、这里将其延申一下, 如果是输入整数n,求1!+2!+3!+4!+5!+6!+7!+…+n! 的和。
是不是阶乘可以使用递归的方法来求呢?
这里是可以使用递归来求,注意的点在于循环里面 i别从0开始了,i==0的话,递归就又找不到出口了。
程序:
程序一
#include <stdio.h>
int main(void) {
int i = 0, a = 0, b = 1;
scanf("%d", &a);
if (a == 0) {
printf("阶乘值为:0");
return 0;
}
for (i = 1; i <= a; i++) {
b *= i;
}
printf("阶乘值为:%d", b);
}
程序二
#include <stdio.h>
int jiecheng(int n ) {
if (n == 1)
return 1;
return n * jiecheng(n - 1);
}
int main(void) {
int i, a = 0, sum = 0;
scanf("%d", &a);
for (i = 1; i <= a; i++) {
sum += jiecheng(i);
}
printf("阶乘和为:%d", sum);
}