问题 B: 累加求和(C++递归实现) 时间限制: 1 S 内存限制: 128 MB 题目描述 从键盘获取一个数n(1<=n<=100), 计算1*2*3 + 2*3*4 +3*4*5 +... +n*(n+1)*(n+2)的结果,并输出计算的结果和中间结果值 输入 一个数n,取值范围为1到100 输出 计算*1*2*3 + 2*3*4 +3*4*5 +... +n*(n+1)*(n+2)的结果 样例输入 12 样例输出? 8190 思路:列出f(1) 1*2*3=6 ?? ??? ??? ??? ? ?f(2) 1*2*3+2*3*4=30 ?? ??? ??? ??? ? ?f(3) 1*2*3+2*3*4+3*4*5=60,总结出递推公式: ?? ??? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1*2*3 ? ? ? ? ? ?n=1, ?? ??? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? f(n-1)+n*(n+1) * (n+2) ? ? ? ? ? ? ? ? ? n>1. 源码:#include <iostream> ?? ??? ??? ??? ?using namespace std; ?? ??? ??? ??? ?long long f(int n) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if(n == 1) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?return 1 * 2 * 3; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?return f(n -1)+n * (n + 1) * (n + 2); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?int main() ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?int n; ?? ??? ??? ??? ??? ?cin>>n; ?? ??? ??? ??? ??? ?cout<<f(n); ?? ??? ??? ??? ??? ?return 0; ?? ??? ??? ??? ?} `
|