编辑代码

#include <stdio.h>
#include "windows.h"

// n个节点,可以构建多少种二叉树
// 利用动态规划可以解决
// 根据讲解,利用递归也可以解决
//  或者这个也满足***卡特兰数*** 利用公式也可以解决

//递归
int x(int n) {
    if (n == 0 || n == 1) return 1;
    else {
        int tmp = 0;
        for (int i = 0; i < n; ++i) {
            tmp += x(i) * x(n - 1 - i);
        }
        return tmp;
    }
}

// 阶乘函数
int factorial(int n){
    if (n == 0 || n == 1) return 1;
    else return n*factorial(n-1);
}
// 卡特兰公式
int goshi(int n){
    return factorial(2*n)/ (factorial(n)* factorial(n+1));
}

int main() {
    printf("%d", goshi(6));
};