【前言】
今天是刷题打卡第56天!
加油吧亲们。
原题:1!+2!+3!+...+n!(递归)
首先先利用递归求解n!:
代码执行:
//计算n的阶乘 int fac(int n) { //找边界 if (n == 0 || n == 1) return 1; return n * fac(n - 1);//n-1的阶乘规模更小,是原问题的子问题 }
那么计算1!+2!+3!+...+n!之和只需要加上一层循环即可:
代码执行:
#include<stdio.h> //计算n的阶乘 int fac(int n) { //找边界 if (n == 0 || n == 1) return 1; return n * fac(n - 1); } int main() { int n = 0; scanf("%d", &n); int i = 0; int sum = 0; for (i = 1; i <= n; i++) { sum += fac(i); } printf("%d\n",sum); return 0; }
结语
今天是刷题打卡第56天!
加油吧少年。