剑指 Offer 64. 求1+2+…+n|刷题打卡

206 阅读1分钟

本文正在参与掘金团队号上线活动,点击 查看详情

一、题目描述:

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

示例 1:

输入: n = 3
输出: 6

示例 2:

输入: n = 9
输出: 45

注意:

1 <= n <= 10000

二、思路分析:

注意该题限制使用关键字!!!

如果不限制可以使用递归 + if。

 if (n === 1) return 1;
 return n + sumNums(n - 1);

此外,除了关键字,我们还可能想到的就是运算符。

将if替换成&&运算符即可。

三、AC 代码:

function sumNums(n: number): number {
  n && (n += sumNums(n - 1));
  return n;
}

四、总结:

此题考查的是运算符的使用,对于做多题目后,限制关键字反而让人想不出更好的解决办法。