C语言阶乘的相关问题

  • 实例过了但还是错了/-_-

    img

img

#include<stdio.h>
double focal(int n,double sum);
void print(long int  N,int n,int sum);
int main()
{
    long int N;
    while(scanf("%ld",&N)!=EOF)
    print(N,18,0);
    return 0;
}
double focal(int n,double sum)
{
    if(n>1)
        return focal(n-1,sum*n);
    return sum;
}
void print(long int  N,int n,int sum)
{
    if(focal(n,1)>N)
        return print(N,n-1,sum);
    else if(focal(n,1)<N)
        return print(N-focal(n,1),n,sum+1);
    else if(N==1||focal(n,1)==N)   
    printf("%d\n",sum+1);
}