c语言求阶乘函数

Python015

c语言求阶乘函数,第1张

#include <stdio.h>

main()

{

long n,sum=1//10 以上的阶乘就比较大了

int i

printf("请输入你要求的阶乘:")

scanf("%d",&n)//先输入要求的数

for(i=ni>0i--)//乘到1为止

{

sum*=i

}

printf("%d != %d",n,sum)

return 0

}

常见的有两种:

递归版本:

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来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。