You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用简化递推关系求解第n个卡特兰数问题

关于卡特兰数简化递推公式未被广泛使用的疑问

近期练习动态规划时遇到第n个卡特兰数问题,查看问题及卡特兰数公式后,对动态规划编码实现感到困惑,于是从数学角度推导了简化递推公式:
(1) C_n = (4n - 2) / (n + 1) * C_{n - 1}

据此写出了如下代码:

//Not sure if this solution is dynamic or not.
int ln = 1;
for(int i = 2; i <= n; i++){
    ln = ln * (4*i - 2) / (i + 1);
}
return ln;

实现并验证该解法后,我查看了该问题的常规动态规划解法,它采用由初始定义推导而来的递推公式:
(2) C_n = sum_{i=0}^{n-1} C_i * C_{n-i-1}
该解法时间复杂度为O(N²),而我的解法时间复杂度为O(N)。

我在网上确认自己推导的公式是卡特兰数的简化递推公式,但查阅多个编码解决方案后,未找到使用该公式实现的O(N)时间复杂度卡特兰数解法,最接近的是使用组合数公式的O(N)解法:
(3) C_n = C(2n, n)/(n + 1)

请问为何我推导的简化递推公式(1)未被广泛用于相关编码解决方案中?

内容的提问来源于stack exchange,提问作者Captaincanadap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 04:35:06