根據遞推關係,如何編程計算這個數列的前10項?

https://zhuanlan.zhihu.com/p/24421809


瀉藥,讓我們把題目寫出來,然後讓計算機算吧:

Prelude&> let s 1 = a 1; s n = s (n - 1) + a n ; a 1 = 1; a n = sqrt (s (n-1) ^ 2 + s (n-1) + 1);
Prelude&> map a [1..10]
[1.0,1.7320508075688772,3.3460652149512318,6.634878326370106,13.241345085141644,26.46851100630659,52.929935752185,105.85632878916633,211.71088627260133,423.42088689882064]


最近這個數列出現在時間線上好多次了……


如果只有10項,可以用遞歸嘛,代碼也會簡單許多


from math import sqrt

# n -- an, the amount of elements you need
def computation(n):
elements = [1]
_sum = 1 # a1
while len(elements) &< n: result = sqrt(_sum*_sum + _sum + 1) _sum += result elements.append(result) return elements computation(10)



推薦閱讀:

入門 Lisp 有哪些在線資料?
Emacs 的配置文件為什麼會用 Lisp 語言來寫?
Chez scheme是怎樣一個編譯器啊,聽說編譯後的scheme代碼速度能媲美C?有人用過么?
SICP第二章里的「圖形語言」在DrRacket 或者MIT Scheme上有沒有辦法實現啊?
想業餘時間學慣用cad二次開發,編程自動出圖,應該如何做?

TAG:Python | C編程語言 | Haskell | Lisp | 數列 |