东方博宜OJ 1148:数数小木块 ← 递归

【题目来源】
https://oj.czos.cn/p/1148

【题目描述】
在墙角堆放着一堆完全相同的正方体小木块,如下图所示:

boyi1148
因为木块堆得实在是太有规律了,你只要知道它的层数就可以计算所有木块的数量了。

【输入格式】
只有一个整数 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
*/

【算法代码:非递归

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n,t,sum=0;
    cin>>n;
    for(int i=1; i<=n; i++) {
        t=i*(i+1)/2;
        sum+=t;
    }
    cout<<sum;
    return 0;
}

/*
in:5
out:35
*/







【参考文献】
https://oj.czos.cn/p/1148






 

posted @ 2025-12-23 08:59  Triwa  阅读(4)  评论(0)    收藏  举报