目录
求1+2+...+n
描述
求 1+2+...+n。
要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
示例 1
输入
n = 3
输出
6
示例 2
输入
n = 9
输出
45
限制
1 <= n <= 10000
方法:逻辑运算符+递归
这个题如果不做限制的话,其实可以使用很多方法,比如
- 求和公式(需要使用乘除法)
- 迭代(需要使用for或者while循环)
- 递归(终止条件要用if判断)
本题很巧妙的一点是利用了逻辑运算符的短路效应,模拟了终止条件。
if(A&&B)//若A为false,则不会执行判断B,直接返回A&&B结果为false
if(A||B)//若A为true,则不会执行判断B,直接返回A||B结果为true
本题的递归代码如下:
class Solution {
public int sumNums(int n) {
boolean x = n > 1 && (n += sumNums(n - 1)) > 0;
return n;
}
}