二叉树中计算二叉树不同形态的树

计算二叉树具有 n 个结点不同形态的树的数量,
有个卡特兰数是怎么计算的啊,

具有 n 个结点的二叉树的形态数量可以表示为 Cn,其中 Cn 表示卡特兰数。其计算公式如下:
C0 = 1
Cn+1 = (4n + 2)/(n + 2) * Cn

代码如下:

#include <stdio.h>

// 计算卡特兰数
unsigned long long catalan(unsigned int n) {
    if (n == 0) {
        return 1;
    }
    unsigned long long c = 0;
    for (int i = 0; i < n; i++) {
        c += catalan(i) * catalan(n - i - 1);
    }
    return c;
}

int main() {
    unsigned int n;
    printf("请输入结点数 n:");
    scanf("%u", &n);
    printf("%u 个结点的二叉树的不同形态数量为:%llu\n", n, catalan(n));
    return 0;
}