本问题对应的 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;
};