题目描述
求
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 { |
运行结果如下: