本文的读者应该具有程序设计的基础,且已经编写过一些递归题目的代码。
(一) 前言
递归是算法领域最重要的基础算法之一,在后续的动态规划算法、搜索算法中也会经常用到递归思想。
递归算法常用于以下三种场景:
(1)递归定义的数学函数(阶乘、阿克曼函数等)
(2)具有递归特性的数据结构(树,二叉树,堆等)
(3)其他可用递归求解的问题
通常用F函数表示递归,例如F(n)表示一个数据规模为n的递归函数。递归算法的思想就是思考如何用问题规模小于n的递归函数,如F(n-1)、F(n/2)等,设计算法求得F(n)。
和学习其他算法一样,递归思想的培养既要一定量的训练,也要思考。学习者应该先学习并掌握一些和递归密切相关的方法(基础性递归问题,以及递归实现指数枚举,组合、排列等)和数学概念(斐波那契,卡特兰数),再通过训练、思考,总结来逐步掌握递归算法和思想。本文仅从递归的角度,对卡特兰数及其相关问题进行一些基础性介绍。
(二) 什么是卡特兰数
卡特兰数(英语:Catalan number),又称卡塔兰数、明安图数,是

本文介绍了递归算法的基本概念及其应用场景,并重点探讨了卡特兰数在递归问题中的应用,包括n元素出栈序列问题、二叉树形态问题、凸多边形三角划分问题及括号匹配问题。
最低0.47元/天 解锁文章
997





