递归求阶乘

xiaoxiao2021-02-28  19

一个正整数的阶乘是指从1到该数的所有整数的乘积,并且0的阶乘是1.我们可以利用递归来求阶乘

例如:利用递归来求5的阶乘。5! = 5 * 4! ,4! = 4 * 3!,3! = 3 * 2!, 2! = 2 * 1!,1!=1;

所以可总结出当n>1时可用n!=n * (n-1)!来计算,当n=1或n=0时n!为1,因此可以得出以下代码。

#include <stdio.h> int fac(int n) { if(n==0||n==1) { return 1; } else { return n * fac(n-1); } } int main() { int n; scanf("%d",&n); printf("%d!为:%d\n",n,fac(n)); return 0; }注:请注意上述代码中数据类型用了int类型,在计算较大的数的阶乘时结果会超出int类型的范围,出现溢出。在阶乘结果溢出的时候可以考虑使用数组来存储结果。
转载请注明原文地址: https://www.6miu.com/read-2630206.html

最新回复(0)