问题描述:
输入n, 求y1=1!+3!+…m!(m是小于等于n的最大奇数)
y2=2!+4!+…p!(p是小于等于n的最大偶数)。
#include "stdafx.h"
#include<iostream>
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);
}