2.奇数项的阶乘之和和偶数项的阶乘之和

问题描述:
输入n, 求y1=1!+3!+…m!(m是小于等于n的最大奇数)
y2=2!+4!+…p!(p是小于等于n的最大偶数)。

#include "stdafx.h"
#include
using namespace std;
int f(int , int=1);

int main()
{
    int n;
    cin >> n;
    int y1 = 0, y2 = 0;
    for (int i = 1; i <= n; i++)
    {
        if (i % 2 != 0) {
            y1 += f(i); continue;
        }
        y2 += f(i);

    }
    cout << y1 << ' '<< y2;//根据题目的要求中间两个结果中间是一个空格
    return 0;
}

int f(int n, int res)//利用尾递归进行阶乘优化处理
{
    if (n < 0) return 0;
    else if (n == 1) return res;
    else return f(n - 1, n*res);

}

你可能感兴趣的:(算法,算法,阶乘)