C语言设计一个函数求阶乘

Python013

C语言设计一个函数求阶乘,第1张

1设计阶乘函数。按照数学定义,对于n的阶乘,如果n为0,则返回1.否则返回1*2*3*...*n的值。用循环实现。2在主函数中输入要求阶乘的值。3调用函数计算阶乘。4输出结果。代码:int fac(int n){int r = 1 int i for(i = 2i <=ni ++)r*=i return r}int main(){int n,r scanf("%d",&n) r = fac(n) printf("%d!=%d\n",n,r)}

常见的有两种:

递归版本:

int Fac(int n){

    if(n==0) return 1

    return n*Fac(n-1)

}

还有一种是循环版:

int ans=1

    for(int i=1i<=ni++) ans*=i

测试方法:

#include<stdio.h>

int Fac(int n){

    if(n==0) return 1

    return n*Fac(n-1)

}

int main(){

    int n

    while(scanf("%d",&n)!=EOF){

        int ans=1

        for(int i=1i<=ni++) ans*=i

        printf("%d %d\n",ans,Fac(n))

    }

    return 0

}

有个值得注意的地方:阶乘时,数增大的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。