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
  • 位运算
  • 递归
  • 脑筋急转弯
  • \n
  • 👍 347
  • 👎 0
  • 题解

    &&短路符号的特性,

    或者的话试试位运算的方法,二进制的相关东西太久远,忘了好多,暂时 不深入了

    主要思路还是用&&控制递归深度,因为这里不能用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;
        }