1.Catalan Number
卡特兰数列
它长这个鬼样子:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012…
解释:这个数列的特点,拿第四位来讲,第四位数是5,5 = 12+ 11 +21
来张灵魂图解:

如果是第五位呢,第五位是14, 14 = 15 + 12 + 21 + 5*1
来张灵魂图解:

所以规律是:
求第n项的值,就是等于前n-1项前后对称位置相乘的和(绕不绕,绕就看图,看图清楚)
代码部分(人生苦短,我用python):
def Catalan_Number(n):
# 先知道前两项,分别是1和1
arr = [1, 1]
# 然后循环,从 2 到 n-1
for i in range(2, n):
total = 0
# 这一步做的就是求出每一项,然后加到数组里面,最后返回数组
for j in range(i):
total += arr[j]*arr[i-j-1]
arr.append(total)
return arr
运行结果
比如输入n=20
结果如下:
[1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190]
思考
代码其实有不完善的地方(本人有点懒,今天纯粹是flag打脸,更新的文章,以后一定好好更),自己发现吧。。。
本文介绍了一种使用Python实现的卡特兰数列生成算法,详细解析了卡特兰数列的特性及生成原理,并附带了具体代码实现。
892

被折叠的 条评论
为什么被折叠?



