要求1+2+3+....+n的值我们可以使用两种方法:
第一种将它所有值加起来:
a=int(input()) #获取输入得到n的值
list=[i for i in range(1,a+1) if i >=1]
#使用列表推导式得到从1到n的所有值(range函数括号是左闭右开所以要加一
print(sum(list))
但是这种方法的时间空间复杂度都是O(N)
第二种使用数学公式:
表达式 n * (1 + n) // 2
是计算前 n
个自然数之和的公式,这是一个等差数列求和公式。这里的 n
表示数列中的项数,1 + n
表示数列中的最大项(即第 n
项),而 //
是整数除法运算符,它返回两个数相除的整数部分。
def JIA(): #这里为我们定义了一个JIA函数用于计算和
n = int(input())
return n * (1 + n) // 2
b = int(JIA())
print(b)
这个程序的时间复杂度是 O(1),因为它直接使用公式计算和,不需要遍历任何序列。
空间复杂度是 O(1),因为它只使用了常数级别的额外空间。