本问题对应的 leetcode 原文链接:剑指 Offer 64. 求1+2+…+n

问题描述

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

示例 1:

输入: n = 3
输出: 6

示例 2:

输入: n = 9
输出: 45

限制:

  • 1 <= n <= 10000

解题思路

视频讲解直达: 本题视频讲解

代码实现

class Solution {
    int sum = 0;
    public int sumNums(int n) {

        // 与或门
        boolean flag = n >= 1 && sumNums(n - 1) < 1;
        sum = sum + n;
        return sum;
    }
}

Python

class Solution(object):
    def __init__(self):
        self.sum = 0

    def sumNums(self, n):
        """
        :type n: int
        :rtype: int
        """
        flag = n >= 1 and self.sumNums(n-1) < 1
        self.sum += n
        return self.sum

C++

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

Go

func sumNums(n int) int {
    if n == 1 {
        return 1
    }
    return n + sumNums(n-1)
}

JS

/**
 * @param {number} n
 * @return {number}
 */
var sumNums = function(n) {
    let sum = n;
    const flag = (n >= 1) && ((sum += sumNums(n-1)) > 0);
    return sum;
};

发表回复

后才能评论