剑指offer系列——求1+2+…+n
使用语言:JavaScript
题目描述
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1: 输入: n = 3 输出: 6
示例 2: 输入: n = 9 输出: 45 限制: 1 <= n <= 10000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/qiu-12n-lcof
这道题如果单看1+2+...+n是很简单的,一个for循环或者递归就可以完成。可是现在限制了for循环,所以我们可以考虑一下递归,但是递归需要有一个判断条件才能终止递归,题目有限制了if、else、switch、case等关键字及条件判断语句(A?B:C)。可是javascript有可以替代的呀,比如&&
/** * @param {number} n * @return {number} */ var sumNums = function(n) { var sum = n; ((n > 0) && (sum += sumNums(n - 1))) return sum; };
这样不就行啦。
不过书上的解法没有使用递归,而是使用了构造函数,指针等方法,等以后看懂了再更新。