递归求解1到100求和

递归求解1到100的和是一个常见面试题。

思想:

思考一下,从1加到100可以分解成:

  • 1+(2加到100的和)
  • 1+2+(3加到100的和)
  • 1+2+3+(4加到100的和)
  • ……

怎么样,这样是不是有点递归的味道了?递归的出口就是1。

所以,可以编写如下代码:

代码:

1
2
3
4
5
6
7
8
9
int count(int n)
{
if (n > 1)
{
return n + count(n - 1);
}
else
return 1;
}

这样,不仅可以求1到100的和,还可以求任意区间数字的和。只要改变递归出口和上限即可。