用逆推和递归的方式求n!

  1. 用逆推方法求n!,从1开始一直乘到n

#include                   
void main()
{
    //system("mode con cp select=65001");
    long fac(int n);
    int n;
    long fact=0;
    printf("请输入n的值:");
    scanf("%d",&n);
    fact=fac(n);
    printf("%d!=%d\n",n,fact);
}
long fac(int n){
    int i;
    long fact=1;
    for(i=1;i<=n;i++){
        fact=fact*i;
    }
    return fact;
}

  1. 用递归的方法求n!

  • n=0,1时,n!=1

  • n>1时,n!=n*(n-1)!

#include                   
void main()
{
    //system("mode con cp select=65001");
    long fac(int n);
    int n,y;
    long fact=0;
    printf("请输入n的值:");
    scanf("%d",&n);
    y=fac(n);
    printf("%d!=%d\n",n,y);
}
long fac(int n){
    long f;
    if(n<0){
        printf("n<0,data error!");
    }else if(n==0 || n==1){
        f=1;
    }else{
        f=fac(n-1)*n;
    }
    return(f);
}

你可能感兴趣的:(c语言,c++,开发语言)