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

更新于:2021 年 2 月 5 日

浏览量 179

开启你的 职业之旅

通过完成课程获得认证

开始
广告