📅  最后修改于: 2023-12-03 15:26:56.004000             🧑  作者: Mango
这是一个简单的数学问题,可以用循环或数学公式求解。
我们可以用循环来依次计算前 N 项的和:
def sum_series(n):
sum = 0
for i in range(n):
sum += 2 + 3 * i
return sum
其中 n
是要求的项数,sum
是累加和。循环依次计算出 2、5、8、11、14 等数列中的每一项,并累加到 sum
中,最后返回总和。
我们也可以用数学公式来求解。对于等差数列 $a_n = a_1 + (n-1)d$,其前 $n$ 项和为:
$$ \begin{aligned} S_n &= \frac{n}{2}(a_1 + a_n) \ &= \frac{n}{2}(2a_1 + (n-1)d) \end{aligned} $$
对于本题,$a_1 = 2$,$d = 3$。代入公式,得到:
$$ S_n = \frac{n}{2}(4 + 3(n-1)) = \frac{3n^2 + 2n}{2} $$
因此,可以直接写出如下Python代码:
def sum_series(n):
return (3 * n ** 2 + 2 * n) // 2
以上就是本题的两种解法:循环和数学公式。循环的时间复杂度为 $O(n)$,而数学公式的时间复杂度为 $O(1)$,因此后者在效率上更优。