题目描述
求
1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路分析
本题抛开要求限制,算是入门级题目,但是加上条件限制却变成了一道思维拓展题,不涉及任何算法知识。这里给出两种解决方案:
方法一:递归法,递归需要判断终止条件,除了
if语句,还有switch,逻辑运算符,进而可以突破if的限制,达到解题目的;方法二:等差数列求和公式,,这里出现了乘除法,现在就需要想方设法找道乘除法的替代方案,除法可以用位运算替代;乘法呢?将分子展开即有 ,平方可以调用库函数
pow。
参考代码
- 方法一:递归法,其时间复杂度为 $O(n)$ ,空间复杂度为 $O(1)$ 。
 
1  | class Solution {  | 
运行结果如下:

- 方法二:等差数列公式,其时间复杂度为 $O(1)$ ,空间复杂度为 $O(1)$ 。
 
1  | class Solution {  | 
运行结果如下:
