题目描述

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

题解

public class Solution {
    public int Sum_Solution(int n) {
      boolean b = n>1 && ((n += Sum_Solution(n-1))>0);
        return n;
    }
}

思路

求1-100的和本来是很简单的,无论是高斯公式,还是简单的for循环都可以实现,但这道题禁止了很多条件,包括各种循环,判断。
我第一想法是递归,但是递归也需要做判断,所以我们需要一个逻辑运算的特性的帮助。
就是&&运算,左侧失败右侧不执行的特性。
在&&两侧分别放置两个逻辑表达式,左侧用来判断n的值是否还在范围内,右侧进行递归计算
最后返回即可


醉后不知天在水,满船清梦压星河