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
广告