求 1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3 输出: 6
示例 2:
输入: n = 9 输出: 45
限制:
1 <= n <= 10000
Related Topics
题解
&&短路符号的特性,
或者的话试试位运算的方法,二进制的相关东西太久远,忘了好多,暂时 不深入了
主要思路还是用&&控制递归深度,因为这里不能用if,二元运算等方法来判断了
联动下前面的斐波那契数列的计算,加上了这些限制条件之后,也让解法变得有趣很多
在递归外定义一个变量,用控制递归次数的方法,依次为这个变量加运算
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
int d = 0;
public int sumNums(int n) {
dep(n);
return d;
}
public int dep(int n){
d = d + n;
boolean b = n>0 && dep(n-1)>0;
return n;
}
}
//leetcode submit region end(Prohibit modification and deletion)
直接递归:
//另外一个方法
public int sumNums(int n) {
boolean t = (n>0) && (n = n + sumNums(n-1))>0;
return n;
}
发表评论