Golang 中的第 N 个卡特兰数
卡特兰数是表示 n 个值所有可能的二叉查找树 (BST) 个数的自然数序列。因此,卡特兰数是一种有 n+1 片树叶的完全二叉树。
卡特兰数的一些应用包括计算嵌套括号对、有效山脉范围等。
对于 n = 5,C = (C(0) * C(4)) + (C(1) * C(3)) + (C(2) * C(2)) + (C(3) * C(1)) + (C(4)* C(0))
因此,我们可以看到卡特兰数呈递归关系形式,即对于第 n 项,卡特兰数 Cn 为,
卡特兰 (i) * 卡特兰 (n-i-1) 的总和
其中 i 的范围为 0 到 (n -1)。
例如,打印 N = 5 的卡特兰数,
1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, ........
上述序列中的第 5 项为 14,因此我们将第 5 个卡特兰数的输出打印为“14”。
卡特兰数的实施
下面给出的代码是第 n 个卡特兰数的实施 −
示例
package main
import "fmt"
func main() {
var n =5
fmt.Scanf("%d", &n)
Catalan := make([]int, n + 1)
Catalan[0] = 1
Catalan[1] = 1
for i := 2; i <= n; i++ {
for j := 0; j < i; j++ {
Catalan[i] += (Catalan[j] * Catalan[i - j - 1])
}
}
fmt.Printf("The Catalan Number (Cn) is: %d", Catalan[n - 1])
}输出
运行上述代码将生成 n = 5 的卡特兰数,
14
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP