在杨辉三角形中,第n行第i列的数字恰好等于组合数C(n,i),其中n和i都从0开始,n=0表示第一行,i=0表示第一列。
在下面的代码中,修饰器lru_cache的作用是给函数cni增加缓存,减少重复计算,从而提高运行速度。当然,虽然用到了缓存加速,但是仍受递归深度的限制,改进方案可以参考Python版组合数计算方法优化思路和源码、尾递归优化原理与Python实现(以Fibonacci数列和小明爬楼梯问题为例)。
运行结果: