卡特兰数简单分析原理 为什么可以求解出栈情况数 史上最简单

首先简单看一下公式


公式就是若要求一个数,就把之前求出来的数,第一个乘以最后一个。


为什么可以这样就可以求出出栈情况数呢?

我们用递归的思想来看待。

这里我们作一个假设。我们会把n个数分成两部分来处理。就是必须等第一部分处理(栈内全部排空)完后,第二部分的数才能入栈,才能被处理。

那样我们就很容易写公式了,那如果1和n-1是独立的两部分。公式就是f(1)*f(n-1)

如果2和n-2是独立的两部分。公式就是f(2)*f(n-2)了

以此类推,就最终可以推到f(n-1)*f(1)

和我们的卡特蓝数的递推公式不谋而合。


有些人可能很奇怪,为什么可以这样思考?他可能会举这样一个反例,我们就不分开来处理,让栈一直保持不为空的状态,这样我是不是就无话可说了?

其实我想说,这样一种情况,不就是把n个数作为一个整体,0个数作为另一个整体吗?所以你的公式是这样的f(0)*f(n) f(0)我们显然可以知道是1。

其实让你求f(n)就是让你求f(n)*f(0)的意思。

所以我敢说,这样思考,绝对绝对可以涵盖所有的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值