3 回答

TA貢獻1789條經驗 獲得超10個贊
一個等差數列(或級數)具有:
一個給定的開始詞語:讓我們把它?F IRST
增量值(任何連續2個詞之間):讓我們把它 d IFF
是一組有序的數字(項),其中每個項可以寫為:
Tk = Tk - 1 + d
,從這里開始:
Tk = T1 + (k - 1) * d
(雖然我發現它有點不自然,? 1為第1日的元素,所以從索引開始1中,為了使?個序列中元件具有索引?)(0)
所以:
T1 = f
T2 = f + (2 - 1) * d
( )T1 + d
T3 = f + (3 - 1) * d
( )T2 + d
T4 = f + (4 - 1) * d
....
Tn - 1 = f + (n - 2) * d
Tn = f + (n - 1) * d
總結所有內容,在=符號的右側:
f出現n次
d出現
(n - 1) + (n - 2) + ... + 2 + 1
,它是數字 til n - 1的總和,可以使用高斯公式計算:(n - 1) * n // 2
對于這種特殊情況,f = 5和d = 4
所以,使用這個等差數列屬性,你不需要計算每一項,因此完全不需要遞歸,相反你可以(應該)使用一堆簡單的算術運算。
有關更多詳細信息,請查看[維基百科]:算術級數
翻譯成Python:
>>> def sum_arithmetic_sequence(first, diff, count):
... return count * first + ((count - 1) * count // 2) * diff
...
>>>
>>> sum_arithmetic_sequence(5, 4, 1)
5
>>> sum_arithmetic_sequence(5, 4, 2)
14
>>> sum_arithmetic_sequence(5, 4, 3)
27
>>> sum_arithmetic_sequence(5, 4, 4)
44
或(來自(0)):
>>> def sequence_sum(n): # I'd add the first and diff arguments as well to keep it general, but for simplicity's sake I'll hardcode them to 5 and 4
... if n == 1:
... return 5
... return 5 + (n - 1) * 4 + sequence_sum(n - 1)
...
>>>

TA貢獻1805條經驗 獲得超9個贊
你應該試著分解它來理解它。
sequence(3, 0)
# first iteration
a = sequence(2, 0) + 4
# second iteration
a = sequence(1, 0) + 4
# third iteration
return 5
# Now let's work our way backwards
a = 5 + 4 -> 9
a = 9 + 4 -> 13
這就是為什么你會得到 13。這是否足以讓你朝著正確的方向前進?這是另一個提示,請注意您正在返回數字序列而不是它們的總和。

TA貢獻1765條經驗 獲得超5個贊
您的問題中似乎至少有幾個令人困惑的問題。首先,您將序列公式表示為:
a(n) = n(n-1) + 4
但要獲得您所描述的結果,公式必須是:
a(n) = a(n-1) + 4
其次,您似乎將序列與序列的總和混淆了。讓我們生成序列(遞歸),然后對序列進行運行求和(也遞歸):
def sum_sequence(sequence):
first, rest = sequence[0], sequence[1:]
if rest:
second, rest = rest[0], rest[1:]
rest = sum_sequence([first + second] + rest)
return [first] + rest
def generate_sequence(n):
if n == 1:
return 5
return generate_sequence(n - 1) + 4
if __name__ == '__main__':
sequence = [generate_sequence(n) for n in range(1, 11)]
print(*sequence, sep=", ", end=", ...\n")
sums = sum_sequence(sequence)
print(*sums, sep=", ", end=", ...\n")
輸出
% python3 test.py
5, 9, 13, 17, 21, 25, 29, 33, 37, 41, ...
5, 14, 27, 44, 65, 90, 119, 152, 189, 230, ...
%
添加回答
舉報