求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
数据范围:
进阶: 空间复杂度 ,时间复杂度
进阶: 空间复杂度 ,时间复杂度
import java.util.stream.LongStream; public class Solution { public int Sum_Solution(int n) { long sum = LongStream.rangeClosed(0L, n).parallel().reduce(0, Long::sum); return Integer.valueOf(String.valueOf(sum)) ; } }
public int Sum_Solution(int n) { return IntStream.rangeClosed(1, n).reduce(0, Integer::sum); }
public int Sum_Solution(int n) { boolean flag = (n > 1) && ((n += Sum_Solution(n - 1)) < 0); return n; }
public class Solution { public int Sum_Solution(int n) { n = n == 1 ? 1 : n + Sum_Solution(n-1); return n; } }
public class Solution { int ret = 0; public int Sum_Solution(int n) { // 用递归,短路作为终止条件 // x没有任何含义,包括Sum_Solution(n-1)>0也是,整个式子纯粹是为了让递归执行下去并设置终止(短路)条件 boolean x = n>0 && Sum_Solution(n-1)>0; // 每次执行都加上当前n,到最后一次执行就是+0 ret += n; return ret; } }
public int Sum_Solution(int n) { //等差数列求前N项和 return n+((n*(n-1))/2); }
/* 用递归。 声明sum与n分开,避免混乱。 用boolean类型的中间变量,使用&&的短路规则,进行递归结束。 */ public int Sum_Solution(int n) { //声明sum与n分开,避免混乱 int sum = n; //用boolean类型的中间变量,使用&&的短路规则,进行递归结束 boolean flag = (n > 0) && ((sum += Sum_Solution(n-1)) > 1); return sum; }