递归求和这一句话不明白什么意思return n+sum(n-1)

//递归计算自然数前N项的和
#include
#include
long sum(int n){//每个long型占4个字节,数的范围比int大
if(n==0){return 0;}
else if(n==1){return 1;}
else {return n+sum(n-1);}
}

int main(){
int n,s;
scanf("%d",&n);
s=sum(n);
printf("%d\n",s);
system("pause");
return 0;
}

因为计算的是前n个自然数的和, 递归的思想是大事化小, 就可以计算 n-1的自然数的和 加上n本身, 如果n = 0,那就是0, 如果n = 1 ,那么和就是1,如果n不是0 / 1, 结果就是sum(n-1) + n 只需要加上n本身,然后让函数去帮我们算n-1的和