Skip to content

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
最近更新

基于 MIT 许可发布