第一种-多维数组+ 位运算法
#include <iostream>
using namespace std;
int sum(int n);
int main(void) {
int n;
scanf("%d",&n);
printf("%d",sum(n));
return 0;
}
int sum(int n) {
char arr[n][n+1];
/*原理:
* arr[n][n+1]相当于定义一个n*(n+1)的矩阵
* 因为定义的是char类型,所以说每个元素占一个字节
* 求sizeof(arr)求得就是n*(n+1)的值
* 然后用位运算符,向右一位,相当于除以2
* 这样就完成了等差数列求和公式
* n* (n+1) /2
*/
return sizeof(arr) >> 1;//右移一位相当于除以2
}
递归法
#include <iostream>
using namespace std;
int getSum(int n) {
n > 0 && getSum(n-1) + n;
}
/*这种方法采取了递归的方法*/