LeetCode每日一题 面试题64. 求1+2+…+n

LeetCode每日一题 面试题64. 求1+2+…+n

  • 题目描述
  • 样例数据
  • 题解&new skills √

题目描述

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

样例数据

示例 1

输入: n = 3
输出: 6

示例 2

输入: n = 9
输出: 45

限制:

1 <= n <= 10000

题解&new skills √

由于题目限制不能使用条件判断语句,那么我们是否能使用别的办法来确定递归出口呢?答案就是逻辑运算符的短路性质。

以逻辑运算符 && 为例,对于 A && B 这个表达式,如果 A 表达式返回 False ,那么 A && B 已经确定为 False ,此时不会去执行表达式 B。同理,对于逻辑运算符 ||, 对于 A || B 这个表达式,如果 A 表达式返回 True ,那么 A || B 已经确定为 True ,此时不会去执行表达式 B

所以实现代码如下:时间复杂度:O(n)

class Solution {
public:
    int sum(int n){
        n&&(n+=sum(n-1));
        return n;
    }
};

你可能感兴趣的:(LeetCode)