/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param n int整型
 * @return int整型
 */

//定义在这里成为全局静态变量,但是作用域只有在这个文件,其他文件无法访问这个变量,在本题中和局部静态变量效果相同;
//static int m = 0;


int recursion(int n ) {
    // write code here

    static int m = 0;
//定义在这里是局部静态变量,作用域是这个函数,
//在函数执行期间变量数值一直存在,第一次调用时会初始化,后续每次调用都是上一次的数值

    m = m + n;
    n--;
    //递归实现
    if (n) {
        recursion(n);
    }

    return m;
}

/*
//也可以使用for循环实现该方案,如下:

int recursion(int n ) {
   static int m = 0;
    for (; n > 0; n--) {
        m = m + n;

    }
    return m;
}
*/

//测试后for循环方式和递归方式二者耗时和占用内存相差无几,不过这题考递归用法暂时没得选,正常情况下能用for循环实现的功能一般不用递归的方式实现