47 求1+2+3+...+n
题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解题思路
核心思想:利用短路特性或递归。
方法一:递归+短路
核心思想:利用and的短路特性,当n>0时继续递归。
方法二:内置函数
核心思想:使用sum()和range()。
时间复杂度:O(n) 空间复杂度:O(n)
Python 实现
python
# 方法一:递归+短路
def sum_solution(n):
"""
求1+2+...+n(递归+短路)
"""
# 利用and的短路特性
return n and n + sum_solution(n - 1)
# 方法二:内置函数
def sum_solution_built_in(n):
"""
求和(内置函数)
"""
return sum(range(1, n + 1))
# 测试代码
if __name__ == "__main__":
test_cases = [1, 5, 10, 100]
for n in test_cases:
print(f"1+2+...+{n} = {sum_solution(n)}")
# 输出:
# 1+2+...+1 = 1
# 1+2+...+5 = 15
# 1+2+...+10 = 55
# 1+2+...+100 = 50