【题目链接】
【题目考点】
1. 递归
【解题思路】
解法1:递归
- 递归问题:求1+2+…+k的和
- 递归关系:如果想求1+2+…+k的和,需要先求1+2+…+k-1的和,再加上k
- 递归出口:1加到1的和为1
解法2:递推
- 递推状态:a[i]为1+2+…+i的和
- 递推关系:a[i] = a[i-1] + i;
- 初始状态:a[1] = 1
解法3:迭代
常规做法
【题解代码】
解法1:递归
#include<bits/stdc++.h>
using namespace std;
int sum(int k)//求1+2+...+k的和
{
if(k == 1)
return 1;
else
return k + sum(k - 1);
}
int main()
{
int n;
cin >> n;
cout << sum(n);
return 0;
}
解法2:递推
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, a[1005];//a[i]:1+2+...+i的和
cin >> n;
a[1] = 1;
for(int i = 2; i <= n; ++i)
a[i] = a[i-1] + i;
cout << a[n];
return 0;
}
解法3:迭代
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, s = 0;//s:和
cin >> n;
for(int i = 1; i <= n; ++i)
s += i;
cout << s;
return 0;
}