剑指offer64-求1+2+…+n

原题(来源Leetcode)

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

示例1:

输入: n = 3
输出: 6

示例1:

输入: n = 3
输出: 6

限制:

  • 1 <= n <= 10000

解法

思想

这道题有比较多的限制,因此需要些技巧。

通常能想到几个方法:

  1. 递归,但不能使用条件判断语句
  2. 数学公式,但不能使用乘法

这里利用短路逻辑运算,从而终止递归。

代码

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

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/%e5%89%91%e6%8c%87offer64-%e6%b1%8212n/