原题(来源Leetcode)
求 1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例1:
输入: n = 3
输出: 6
示例1:
输入: n = 3
输出: 6
限制:
1 <= n <= 10000
解法
思想
这道题有比较多的限制,因此需要些技巧。
通常能想到几个方法:
- 递归,但不能使用条件判断语句
- 数学公式,但不能使用乘法
这里利用短路逻辑运算,从而终止递归。
代码
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/