怎么改,使用函数递归调用方法实现

编写程序,输入整数n,计算并输出n的阶乘:n!=123n,要求使用函数递归调用方法实现,n取值范围为:0≤n≤10,程序输入输出样例(3个)如下所示。

输入样例: 输出样例:
n=3 The factorial of 3 is 6
n=12 The input is out of range
n=-2 The input is out of range


怎么写

望采纳! 谢谢

#include <stdio.h>
int cal(int n){
    if (n == 1)
        return 1;
    else
        return n * cal(n -1);
}
int main()
{
    int num;
    int sum =0;
    scanf("%d", &num);
    if (num <= 0 || num >=10)
        {printf("The input is out of range");
        return 0;}
    else
        sum = cal(num);
    printf("The factorial of %d is %d", num, sum);
    return 0;
}

img


        /*0被加入到out of range*/
        #include <stdio.h>
        int func(int a)
        {
                if(a > 10 || a <= 0)
                        return 0;
                else if (a == 1)
                return 1;
                else
                return a * func(a - 1);
        }

        int main()
        {
                int a[3]={3, 12, 0};
                int i;
                int result;
                for(i=0; i < 3; i++){
                        result = func(a[i]);
                        if(result)
                        printf("n = %d The factorial of %d is %d\n", a[i], a[i], result);
                        else
                        printf("n = %d The input is out of range\n", a[i]);
                }
                return 0;

        }

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <stack>
#include <list>
#include <limits.h>
 
using namespace std;
 
int jc(int n){
    if(1==n){
        return 1;
    }
    return n*jc(n - 1);
}
 
int main()
{
 
 
    int n;
    cin>>n;
    cout<<jc(n);
 
 
    return 0;
}