关于c语言实现递归的三种方式

用三种方法实现阶乘求和:S=1+1!+..+N!
要求N从命令行输入,且1<=N<=10
方法一:标准方法求阶乘后求和
方法二:利用递推公式F(N)=N*F(N-1)实现,最小计算量
方法三:利用递归实现
编写函数,递归调用
F(N)=1 N=1;
F(N)=N*F(N-1) N>1
方法二和方法三第一次了解,想看到确切代码,方法一想看标准格式

供参考


#include <stdio.h>

void fun1(int n)
{
    int sum=0,s;
    for(int i=1;i<=n;i++)
    {
        s=1;
        for(int j=1;j<=i;j++)
        {
            s*=j;
        }        
        sum+=s;
    }
    printf("fun1: %d\n",sum);
}

void fun2(int n)
{
    int sum=0,s=1;
    for(int i=1;i<=n;i++)
    {
        s*=i;
        sum+=s;
    }
    printf("fun2: %d\n",sum);    
}

int fun3b(int n)
{
    if(n==1)
        return 1;
    return n*fun3b(n-1);
}

void fun3(int n)
{
    int sum=0;
    for(int i=1;i<=n;i++)
    {        
        sum+=fun3b(i);
    }
    printf("fun2: %d\n",sum);    
}

int main()
{
    int n=5;
    fun1(n);
    fun2(n);
    fun3(n);
    return 0;
}