题解 B2142 【求 sum(1..n)】
daiarineko · · 题解
题意简述
求
解法1
复杂度:
题目要求的解法,使用递归。
具体讲一下 f 函数,这里 f(n) 的定义是
其中 f 函数:return f(n-1)+n。
递归的结束条件:n==1,这时候
(亦可在 n==0 时返回 0)。
#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;
cin>>n;
cout<<f(n)<<endl;
return 0;
}
解法2
复杂度:
可以使用数学解法降低复杂度。
我们都知道等差数列的通项公式:(首项+末项)*项数/2。
其中首项为
代入公式得
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
cout<<n*(n+1)/2<<endl;
return 0;
}
此解法在