第一种-多维数组+ 位运算法

#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;
}
/*这种方法采取了递归的方法*/