n的阶乘定义就是如同这样的:1*2*3*4....*n ,从一开始×到你需要的那个数字
思路如下
1.可选择有递归或者非递归的方法进行完成
2.理情思路,思考如何进行累×
3.非递归代码如下:
int main() {
int n = 0;
scanf("%d", &n);
int i = 0;
int sum = 1;
for (i = 1; i <= n; i++) {
sum *= i;//sum*表连续相乘
}
printf("%d", sum);
return 0;
}
当然也有兄弟想要更加深奥一点用递归的方法去完成
我们要理清递归的一个思路从而去判断
当使用递归的时候,首先想到n的阶乘的一个特殊性!比如1,1的阶乘永远是1,从而我们可以知道肯定会运用到一个判断从而想到if语句。
其次想一下递归的实现效果 如同Fac(n-1) 当n=3 Fac(3)=3*Fac(2)而Fac(2)=2*Fac(1)
其中Fac(1)=1 所以Fac(3)=3*2*1 简洁明了实现了递归。
int Fac(int n) {
if (n >= 2) {
return n * Fac(n - 1);
}
else {
return 1;
}
}
int main() {
int n = 0;
scanf("%d", &n);
int ret = Fac(n);
printf("%d", ret);
return 0;
}
希望以上对阶乘不会的同学有帮助哦~~