【题目来源】
https://oj.czos.cn/p/1148
【题目描述】
在墙角堆放着一堆完全相同的正方体小木块,如下图所示:
因为木块堆得实在是太有规律了,你只要知道它的层数就可以计算所有木块的数量了。
【输入格式】
只有一个整数 n,表示这堆小木块的层数,已知 1≤n≤100。
【输出格式】
只有一个整数,表示这堆小木块的总数量。
【输入样例】
5
【输出样例】
35
【数据范围】
1≤n≤100
【算法分析】
观察可知,各层小木块的数量依次为 1,3,6,10,15,……
据此可得规律,即:第 i 层的小木块数量比第 i-1 层的小木块数量多 i 个。
然后,基于此规律,构建递归函数。
【算法代码】
#include <bits/stdc++.h> using namespace std; int f(int n) { if(n==1) return 1; return f(n-1)+n; } int main() { int n,sum=0; cin>>n; for(int i=1; i<=n; i++) { sum+=f(i); } cout<<sum; return 0; } /* in:5 out:35 */
【参考文献】
https://oj.czos.cn/p/1148