《剑指offer》—— 求1+2+…+n

931 阅读1分钟

原题地址:leetcode-cn.com/problems/qi…
原文地址:juejin.cn/post/684490…

题目描述

1 + 2 +... + n ,要求不能使用乘除法、forwhileifelseswitchcase 等关键字及条件判断语句(A ? B : C

解题思路

通常求和无非是这几种写法:

  • 等差数列的前 n 项和:Sn = (a1 + an) * n / 2
  • for 循环累加
  • 尾递归

然而题目中要求不能使用乘除法、forwhileifelseswitchcase 等关键字及条件判断语句(A ? B : C),那么前面两种解法自然就被我们排除掉了,只能用尾递归。

为了方便理解,这里帮大家画个图👇

示例代码

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

搜索「tony老师的前端补习班」关注我的微信公众号,那么就可以第一时间收到我的最新文章。