题解 | #阶乘#

阶乘

https://www.nowcoder.com/practice/e58c8a55162d49c48115bdfa5da7da56

用递归把1-50的阶乘保存到数组,累加即可。

#include <iostream>
using namespace std;
int jiecheng[100] = {0};

int jiec(int n) {
    if (n == 0 || n == 1) {
        jiecheng[n] = 1;
        return 1;
    } else {
        if (jiecheng[n] != 0)  return jiecheng[n];
        else {
            jiecheng[n] = n * jiec(n - 1);
            return n * jiec(n - 1);
        }

    }
}

int main() {
    jiec(50);
    int n;
    while (cin >> n) { // 注意 while 处理多个 case
        int m, p, y1 = 0, y2 = 0;
        if (n % 2 == 0) {
            p = n;
            m = n - 1;

        } else {
            p = n - 1;
            m = n;
        }
        for (int i = 1; i <= m; i += 2) {
            y1 += jiecheng[i];
        }
        for (int i = 2; i <= p; i += 2) {
            y2 += jiecheng[i];
        }
        cout<<y1<<" "<<y2<<endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务