题目: 求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例:
输入: n = 3
输出: 6
一、不符合系统要求的解法
求1+2+…+n 有很多种办法,但题目给出了我们限制条件,这就使得我们最常使用的办法不能使用了,我们来看看那些不能用了。
(一)循环累加
这个是大多数人看到这个题的第一个想法,思路也很简单,就是循环累加:
//1.循环
int sumNums(int n)
{
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=i;
}
return sum;
}
但是题目说了不呢使用for ,所以这个办法不能用。
(二)递归求解
for和递归可以转换,这个题目递归解决的思路,也很简单:
- 递归跳出条件n==1时,return 1;
- 递归内容:n+=sumNums(n-1),最后返回n即可。
为了理解递归内容我们画个图举例 ,当n=3时:
//2.递归
int sumNums